Спящий запрос один ко многим - PullRequest
0 голосов
/ 10 августа 2011

У меня есть следующие классы-таблицы с однозначными отношениями

Люди

 @Entity 
 public class People{ 
     @Id @Column private Integer id;
     @Column(name="FNAME")  private String fName;   
     @Column(name="LNAME")  private String lName;   
     @OnetoMany(targetEntity=Registration.class, mappedBy="pId", cascade.....)  
     private Set<Registrations> registrations;   
     //getters and setters 
  } 

События

  @Entity
  public class Events{
     @Id @Column private Integer id;   
     @Column(name="NAME")  private String name;
     @Column(name="DATE")  private Timestamp date;
    @OnetoMany(targetEntity=Registration.class, mappedBy="eId", cascade.....)  
    private Set<Registrations> registrations;   
    //getters and setters 
  }

1009 * зарегистрирования *

  @Entity
  public class Registrations{
     @Id @Column private Integer id;   
     @Manytoone @JoinColumn(name="pid" ) private Person person;
     @Manytoone @JoinColumn(name="eid" ) private Event event;
  //getters and setters 
  }

Таким образом, в форме ввода, когда пользователь вводит список «идентификаторов событий», мне нужно вернуть список людей, которые посетили эти события. Как написать запрос для этого типа? У меня есть это до сих пор ..

из Person p присоединиться к p.registations r, где r.event.id in (: eventIdlist) "

но я думаю, что он возвращает и личность, и объекты регистрации .. потому что когда я сделал этот список, то person = query.list (), который я получил, не может привести к типу ошибки .. Мне просто нужен список объектов персонажа.

Ответы [ 2 ]

1 голос
/ 10 августа 2011
select distinct r.person from Registration r where r.event.id in (:eventIdList)
0 голосов
/ 10 августа 2011

Еще проще:

select r.person from Registration r where r.event.id in (:eventIdList)

ИЗМЕНЕНО из комментария: Чтобы присоединиться к другим вашим столам, вы можете сделать:

select p
from Person p
where p.registration.event.id in (:eventIdList)
and p.peopleLanguage.language.id in (:languageIdList)
...