在Hibernate中,如何为多对多自联接创建新关系
我试图通过多对多的自加入来维持用户和朋友之间的关系。我使用以下方法,但数据库中从未创建任何关系。传递方法参数的用户是根据用户输入创建的,仅包含一个id。它还有一组只有id的好友。代码如下:在Hibernate中,如何为多对多自联接创建新关系,hibernate,many-to-many,hibernate-mapping,self-join,Hibernate,Many To Many,Hibernate Mapping,Self Join,我试图通过多对多的自加入来维持用户和朋友之间的关系。我使用以下方法,但数据库中从未创建任何关系。传递方法参数的用户是根据用户输入创建的,仅包含一个id。它还有一组只有id的好友。代码如下: public User saveUserFriends(User user) { Transaction transaction = null; try { User retrievedUser = (User) session.get(User.clas
public User saveUserFriends(User user) {
Transaction transaction = null;
try {
User retrievedUser = (User) session.get(User.class, user.getId());
transaction = session.beginTransaction();
for(User friend :user.getFriends()){
System.out.println("friend "+friend.getId());
friend = (User) session.get(User.class, friend.getId());
System.out.println("retrieved user id "+user.getId());
retrievedUser.getFriends().add(friend);
session.save(retrievedUser);
transaction.commit();
}
}catch (HibernateException e) {
e.printStackTrace();
} finally {
session.close();
}
return user;
}
我的hibernate映射如下所示:
<hibernate-mapping>
<class name="com.User" table="User">
<id name="id" type="int">
<column name="userId" />
<generator class="native" />
</id>
<set name="friends" table="User_Friend"
inverse="true" lazy="false" cascade="none">
<key column="userId"/>
<many-to-many column="friendId" class="com.User" />
</set>
<set name="users" table="User_Friend"
inverse="true" lazy="false" cascade="none">
<key column="friendId"/>
<many-to-many column="userId" class="com.User" />
</set>
</class>
</hibernate-mapping>
输出仅为选择。为什么没有创建关系?我不是XML映射专家,但多对多关联的两面都被标记为反面(
reverse=“true”
)。因此,在持久化用户时,Hibernate并不关心它们