Объединение запросов, отношения один-ко-многим в JPA с запросом JPQL - PullRequest
0 голосов
/ 25 декабря 2018

У меня есть база данных.с отношениями один ко многим.

pet 1--* event.

Я хочу сделать запрос, который выбирает всех домашних животных, у которых было событие в данную дату.(Я использую формат даты SQL)

На данный момент я просто хочу иметь возможность получить все сущности для жестко закодированной даты.

вот ссылка в моей таблице PetEntity

@OneToMany
private List<EventEntity> events = new ArrayList();

и в моем EventEntity

@ManyToOne
PetEntity pet;

Я использую шаблон, в котором я использую репозиторий для обработкислой данных, а затем фасад для обработки любой логики (если есть)

До сих пор я создал такой метод.

  public Set<PetEntity> getPetsWithEvents(Date date){
    EntityManager em = emf.createEntityManager();
    Set<PetEntity> entities = new HashSet<>();
    List<EventEntity> eventEntities=  
em.createQuery("SELECT e from EventEntity e where e.date =: date", EventEntity.class).setParameter("date", date).getResultList();
        for(EventEntity entity: eventEntities){
            entities.add(entity.getPet());
        }
        return  entities;
   }
}

Есть ли способ просто перевести этот метод виспользуя один запрос, вместо того, чтобы перебирать вентиляцию и находить каждого питомца?

1 Ответ

0 голосов
/ 25 декабря 2018

Как уже упоминалось, вы сможете выбрать событие для присоединения питомца.JPQL будет выглядеть примерно так:

SELECT p FROM PetEntity p join p.events e
WHERE e.date =: date
...