映射相同的类关系
嗨,我正在尝试在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">