Hibernate manytone仅列出1个关系实体

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_

我正在使用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_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的结果和到对象的转换之间吸收它们。