我试图通过多对多自我加入来维持用户和朋友之间的关系。我正在使用以下方法,但从未在数据库中创建任何关系。用户传递的方法参数是从用户输入创建的,并且只包含一个 id。它还有一组只有 id 的朋友。这是代码:
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-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>
输出只是选择。为什么没有建立关系?