使用相同实体的递归多对多关联的Hibernate

26 浏览
0 Comments

使用相同实体的递归多对多关联的Hibernate

另一个Hibernate问题... 😛

使用Hibernate的注解框架,我有一个User实体。每个User可以有一组朋友:其他User的集合。然而,我无法弄清楚如何在User类中创建一个由User列表组成的多对多关联(使用一个user-friends中间表)。

这是User类及其注解:

@Entity

@Table(name="tbl_users")

public class User {

@Id

@GeneratedValue

@Column(name="uid")

private Integer uid;

...

@ManyToMany(

cascade={CascadeType.PERSIST, CascadeType.MERGE},

targetEntity=org.beans.User.class

)

@JoinTable(

name="tbl_friends",

joinColumns=@JoinColumn(name="personId"),

inverseJoinColumns=@JoinColumn(name="friendId")

)

private List friends;

}

用户-好友映射表只有两列,两列都是指向tbl_users表的uid列的外键。这两列分别是personId(应映射到当前用户)和friendId(指定当前用户的朋友的id)。

问题是,"friends"字段始终为null,即使我已经预先填充了friends表,使系统中的所有用户都是彼此的朋友。我甚至尝试将关系切换为@OneToMany,但它仍然为null(尽管Hibernate的调试输出显示了一个SELECT * FROM tbl_friends WHERE personId = ? AND friendId = ?的查询,但没有其他内容)。

有什么想法如何填充这个列表吗?谢谢!

0