Hibernate注解的方式一对多查询结果全部重复
数据库中有两个表TaskPool,ReportQueryCon,二者一对多(resNumber)----(resNumber,serialno)
taskPool(
resNumber(主键)
reportType
..(其他字段省略)
)
ReportQueryCon(
resNumber
serialno
queryname
queryvalue
)
(联合主键resNumber,serialno)
映射采用注解的方式,代码如下
@Entity
@Table(name="TaskPool")
public class TaskPool implements Serializable{
private String resNumber;
..
private List<ReportQueryCon> reportQueryConList;
@Id
@Column(name="resNumber")
public String getResNumber(){
}
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinColumn(name="resNumber")
public String getResNumber(){
}
..省略get和set方法
}
@Entity
@Table(name="ReportQueryCon")
public class TaskPool implements Serializable{
private String resNumber;
private int serialNo;
private String queryName;
private String queryValue;
@Id
@Column(name="resNumber")
public String getResNumber(){
}
@Id
@Column(name="resNumber")
public int getSerialNo(){
}
@Column(name="queryName")
public String getQueryName(){
}
@Column(name="queryValue")
public String getQueryValue(){
}
..省略set方法
}
@Embeddable
public class ReportQueryConJoinFK implements Serializable{
private String resNumber;
private int serialNo;
..省略get和set方法
}
目前taskPool表中只有一条数据,对应的ReportQueryCon表中有11条数据,serialNo从1到11
我写了个测试类
publilc static void main(String[] args) throws Exception{
Session session = new AnnotationConfiguration().configure().bulidSessionFactory().openSession();
List list = session.createQuery("from TaskPool").list();
TaskPool taskPool = (TaskPool )list.get(0);
List<ReportQueryCon> conList = taskPool.getReportQueryConList();
for(ReportQueryCon con : conList){
System.out.println(con.getQueryName());
}
}
执行的结果是:打印11个相同的值
conList集合有11个对象,但问题是这11条数据全是一样的,都是数据库中的serialNo为1的记录,serialNo2-11的记录没有;请问这是什么原因?
------解决方案--------------------解决了????