Hibernate manytone仅列出1个关系实体
我正在使用hibernate 3.6.10,我面临着这种情况 我有:Hibernate manytone仅列出1个关系实体,hibernate,annotations,many-to-one,Hibernate,Annotations,Many To One,我正在使用hibernate 3.6.10,我面临着这种情况 我有: table A: a_id, a_name, a_desc table B: b_id, b_name, a_id 一个A可以是多个B 我想做一个单向多通连接 所以我有: @Entity @Table(name = "B") public class B { @ManyToOne(fetch = FetchType.EAGER) @Cascade(CascadeType.ALL) @JoinColumn(name = "a_
table A: a_id, a_name, a_desc
table B: b_id, b_name, a_id
一个A可以是多个B
我想做一个单向多通连接
所以我有:
@Entity
@Table(name = "B")
public class B {
@ManyToOne(fetch = FetchType.EAGER)
@Cascade(CascadeType.ALL)
@JoinColumn(name = "a_id")
private A a;
@Column(name = "b_name")
private String b_name;
...
}
@Entity
@Table(name = "A")
public class A {
@Id
@Column(name = "a_id")
private Integer id;
....
}
那么我会:
sessionFactory.getCurrentSession().createCriteria(B.class).list();
问题是:
它进行左外连接,但只为所有B带来1个实体A
它应带来:
row 1: B: 1 | 1stName | 32 (a_id & a_name & a_desc)
row 1: B: 2 | 2ndName | 69
row 1: B: 3 | 3rdName | 45
row 1: B: 4 | 4thName | 94
row 1: B: 5 | 5thName | 32
但它带来了:
row 1: B: 1 | 1stName | 32 (a_id & a_name & a_desc)
row 1: B: 2 | 2ndName | 32
row 1: B: 3 | 3rdName | 32
row 1: B: 4 | 4thName | 32
row 1: B: 5 | 5thName | 32
看起来Hibernate使用正确的联接执行了正确的查询,如果我在DB中手动运行它,会像预期的那样带来正确的联接。
在我看来,我在如何配置hibernate/注释方面遇到了问题
我可以在日志中看到实体B的正确值,但出于某种原因,它只对所有B使用一个(id 32)
有什么想法吗
我希望这个问题能引起共鸣
谢谢 您可以在hibernate中启用sql日志,并对db运行相同的查询。我猜,所有的B都被分配到同一个A。我可以在日志中看到正确的B。看起来hibernate正在从DB的结果和到对象的转换之间吸收它们。