java映射同一类关系
嗨 我正在尝试在hibernate中映射一些类,但对于如何进行这种映射,我有一个普遍的问题。 用户类和Facebook用户类的结构如下 用户类别:
public class User{
public User(){}
Long Id;
String FirstName;
String LastName;
....
FbUser fbuser;
//// all requred
getters and setters...
}
Facebook类FbUser可以拥有属于同一类FbUser对象的好友列表
public class FbUser{
public FbUser(){}
Long fbId;
String FirstName;
String LastName;
List<FbUser> friends;
//// all requred
getters and setters...
}
到目前为止,我在用户和FbUser之间建立了多对一关系
<hibernate-mapping>
<class
name="User"
table="User"
>
<id
name="Id"
column="ID"
type="java.lang.Long"
unsaved-value="null"
>
<generator class="increment"/>
</id>
<property
name="FirstName"
update="true"
insert="true"
not-null="false"
unique="false"
type="java.lang.String"
>
<column name="FirstName" />
</property>
<property
name="LastName"
update="true"
insert="true"
not-null="false"
unique="false"
type="java.lang.String"
>
<column name="LastName" />
</property>
<many-to-one
name="fbUser"
class="FbUser"
cascade="all"
column="fbId"
unique="true"
/>
</class>
</hibernate-mapping>
现在是FbUser映射:
<hibernate-mapping>
<class
name="FbUser"
table="FbUser"
>
<id
name="fbId"
column="fbId"
type="java.lang.Long"
unsaved-value="null"
>
<generator class="increment"/>
</id>
<property
name="FirstName"
update="true"
insert="true"
not-null="false"
unique="false"
type="java.lang.String"
>
<column name="FirstName" />
</property>
<property
name="LastName"
type="java.lang.String"
update="true"
insert="true"
column="LastName"
not-null="true"
unique="false"
/>
</class>
</hibernate-mapping>
我可以在FbUser映射文件中映射FbUser列表吗?我迷路了:(
# 1 楼答案
您可以创建一个名为MyFriends的附加类
只是相关部分
如果您有索引列
如果没有索引列
将您的列表重新写为
及
还有你的朋友注意,您需要一个复合主键(作为静态内部类实现)
您的MyFriends如下所示
# 2 楼答案
首先,用户和FbUser有一对一的关系,对吗? 第二:使用列表或集合将FbUser映射为多对多关系。我在这里举了一个例子: