您可以创建一个名为MyFriends的附加类。
public class FbUser { List<MyFriends> friends = new ArrayList<MyFriends>();}只是相关的部分
如果您有索引栏
<hibernate-mapping> <class name="FbUser"> <list name="myFriends"> <key column="ME_ID" insert="false" update="false"/> <list-index column="WHICH COLUMN SHOULD BE USED AS INDEX"/> <one-to-many /> </list> </class></hibernate-mapping>
如果您没有索引列
将您的清单改写为
public class FbUser { Collection<MyFriends> friends = new ArrayList<MyFriends>();}和
<hibernate-mapping> <class name="FbUser"> <bag name="columns"> <key column="ME_ID" insert="false" update="false"/> <one-to-many /> </bag> </class></hibernate-mapping>
以及您的MyFriends映射。 注意,您需要一个复合主键 (实现为静态内部类)
<class name="MyFriends"> <composite-id name="myFriendsId" > <key-property name="meId"/> <key-property name="myFriendId"/> </composite-id> <many-to-one name="me" insert="false" update="false"/> <many-to-one name="myFriend" insert="false" update="false"/></class>
您的MyFriends如下所示
public class MyFriends { private MyFriendsId myFrinedId; private FbUser me; private FbUser myFriend; public static class MyFriendsId implements Serializable { private Integer meId; private Integer myFriendId; // getter's and setter's public MyFriendsId() {} public MyFriendsId(Integer meId, Integer myFriendId) { this.meId = meId; this.myFriendId = myFriendId; } // getter's and setter's public boolean equals(Object o) { if(!(o instanceof MyFriendsId)) return false; MyFriendsId other = (MyFriendsId) o; return new EqualsBuilder() .append(getMeId(), other.getMeId()) .append(getMyFriendId(), other.getMyFriendId()) .isEquals(); } public int hashpre() { return new HashCodeBuilder() .append(getMeId()) .append(getMyFriendId()) .hashCode(); } }}


