Заполнить JPA заполнить дочерний массив (один ко многим) только определенными дочерними - PullRequest
0 голосов
/ 03 октября 2019

Мне нужно заполнить сущность дочерними сущностями, и она хорошо работает, когда мне нужны все дочерние элементы, но теперь я хочу иметь только несколько.

Например, у меня есть Owner 1-----n Pet

Если я ownerRepositoty.findAll();У меня есть все владельцы, у каждого из которых есть множество всех домашних животных. Но скажем, я хочу получить всех владельцев с массивом pet, имеющим только тех, чье имя начинается с N.

Пример родительской сущности:

public class Owner {
    @OneToMany(mappedBy="Owner")
    private Set<Pet> pets; //This gets filled with all pets

    //getters & setters
}

И дочерней сущности:

 public class Pet {
        @ManyToOne
        @JoinColumn(name="owner_id", nullable=false)
        private Owner owner;

        //getters & setters

 }

Я пытался с JOIN FETCH, как объяснено здесь в запросе к репозиторию, но он просто сделал обычный sql JOIN, который не то, что я ищу.

Есть идеи?

1 Ответ

0 голосов
/ 03 октября 2019

Я нашел способ сделать это: вы можете использовать аннотацию @Where для фильтрации дочерних элементов отношений one to many или many to many.

public class Owner {

    @OneToMany(mappedBy="Owner")
    @Where(clause = "name like 'N%'")
    private Set<Pet> pets; //This gets filled with pets with a name starting with N

    //getters & setters
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...