hibernate创建用户到朋友的关系
我正在使用hibernate并试图表示一种用户对朋友的关系。我的第一个想法是用一组朋友对象创建一个用户对象 我想要一个包含所有用户和信息的用户表,如: 用户表:名字、姓氏等 然后是一个用户朋友表来管理这些关系。比如: *User\u Friend表:id,userId,friendIduserId* 一个用户会有很多FriendID 我已经为用户对象创建了一个表和映射:hibernate创建用户到朋友的关系,hibernate,one-to-many,hibernate-mapping,Hibernate,One To Many,Hibernate Mapping,我正在使用hibernate并试图表示一种用户对朋友的关系。我的第一个想法是用一组朋友对象创建一个用户对象 我想要一个包含所有用户和信息的用户表,如: 用户表:名字、姓氏等 然后是一个用户朋友表来管理这些关系。比如: *User\u Friend表:id,userId,friendIduserId* 一个用户会有很多FriendID 我已经为用户对象创建了一个表和映射: <id name="id" type="int"> <column name="userId
<id name="id" type="int">
<column name="userId" />
<generator class="native" />
</id>
<set name="friends" table="User_Friend???"
inverse="true" lazy="true" fetch="select">
<key>
<column name="userId" not-null="true" />
</key>
<many-to-many entity-name="Friend">
<column name="friendId" not-null="true" />
</many-to-many>
</set>
<property name="firstName" type="string"></property>
<property name="lastName" type="string"></property>
<property name="email" type="string"></property>
如果我想在user表中保留朋友信息,如first name、last name等,并在user\u friend表中保留关系,那么我的朋友对象的映射会是什么样子
我应该把朋友当作基本用户吗?如果是,我会将上面的User\u Friend表更改为User表吗
编辑:
我发现这解释了一个双向的一对多/多对一连接表。
这是否允许我创建一个用户到朋友的关系,而无需为朋友复制用户表
谢谢 尝试两个表格:
Users -- with your user information
user_friends -- with two user_ids representing a friendship.
您的业务逻辑可以指示这种关系是双向的还是单向的。您正在寻找的是Hibernate中的多对多自引用 在以下示例中,员工可以有许多同事:
@Entity
@Table(name="EMPLOYEE")
public class Employee {
//id, firstname, lastname
@ManyToMany(cascade={CascadeType.ALL})
@JoinTable(name="EMPLOYEE_COLLEAGUE",
joinColumns={@JoinColumn(name="EMPLOYEE_ID")},
inverseJoinColumns={@JoinColumn(name="COLLEAGUE_ID")})
private Set<Employee> colleagues = new HashSet<Employee>();
@ManyToMany(mappedBy="colleagues")
private Set<Employee> teammates = new HashSet<Employee>();
// Getter and Setter methods
}
请参见教程: