【发布时间】:2011-08-09 20:40:25
【问题描述】:
我有以下具有一对多关系的类表
人
@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
}
注册
@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
}
所以在用户输入“事件ID”列表时的输入表单中,我需要返回参加这些事件的人员列表。如何为这种类型编写查询? 到目前为止我有这个..
from Person p join p.registations r where r.event.id in (:eventIdlist)"
但我认为它同时返回人员和重新定义对象。因为当我执行此 List person = query.list() 时,我得到了无法转换的错误。我只需要人员对象列表。
【问题讨论】:
-
告诉我们确切的错误信息是什么,并展示使用引发此异常的代码。此外,您的映射是错误的:mappedBy="eId" 应该替换为 mappedBy="event",mappedBy="pId" 应该替换为 mappedBy="person"。
标签: hibernate one-to-many