映射相同的类关系

嗨,我正在尝试在hibernate中映射一些类,并且有一般问题如何完成这样的映射。 User类和Facebook用户类具有以下结构User Class:

public class User{ public User(){} Long Id; String FirstName; String LastName; .... FbUser fbuser; //// all requred getters and setters... } 

Facebook类FbUser可以拥有作为同一类FbUser的对象的Friends列表。

 public class FbUser{ public FbUser(){} Long fbId; String FirstName; String LastName; List friends; //// all requred getters and setters... } 

直到现在我在User和FbUser之间建立了多对一的关系。

               

现在FbUser Mapping:

            

我可以在FbUser Map文件中映射FbUser List吗? 我迷路了 :(

您可以创建另一个名为MyFriends的类

 public class FbUser { List friends = new ArrayList(); } 

只是相关部分

如果你有一个索引列

          

如果您没有索引列

将您的列表重新编写为

 public class FbUser { Collection friends = new ArrayList(); } 

         

和你的MyFriends映射。 请注意,您需要一个复合主键 (实现为静态内部类)

         

您的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 hashcode() { return new HashCodeBuilder() .append(getMeId()) .append(getMyFriendId()) .hashCode(); } } } 

那么,首先:用户与FbUser有一对一的关系,对吗? 第二:使用列表或集合将FbUser映射到FbUser作为多对多关系。 我在这里有一个Set示例:

   access="field">