Java 冬眠一天,自然PK
我对建立一对夫妇的关系有意见 我的数据库模式:Java 冬眠一天,自然PK,java,hibernate,one-to-many,hibernate-onetomany,Java,Hibernate,One To Many,Hibernate Onetomany,我对建立一对夫妇的关系有意见 我的数据库模式: TABLE PARENT ( VENDOR, CHANNEL, CREATEDATE, REFID, ... ) UNIQUE INDEX PK_PARENT (VENDOR, CHANNEL, CREATEDATE, REFID) TABLE CHILD ( REFID, NAME, ) UNIQUE INDEX PK_CHILD (REFID, NAME) 和Java类 public class Parent { String ve
TABLE PARENT (
VENDOR,
CHANNEL,
CREATEDATE,
REFID,
...
)
UNIQUE INDEX PK_PARENT (VENDOR, CHANNEL, CREATEDATE, REFID)
TABLE CHILD (
REFID,
NAME,
)
UNIQUE INDEX PK_CHILD (REFID, NAME)
和Java类
public class Parent {
String vendor;
String channel;
Date createdate;
Long refid;
List<Child> childs;
...
}
public class Child {
Long refid;
String name;
}
有什么想法吗?因为您的子实体有一个复杂的键,所以在父实体中您需要将外键也指定为复杂键。因为您的子实体有一个复杂的键,因此,在父实体中,您还需要将外键指定为complex。根据hibernate配置xml文件中的java类字段更改属性名称。如果java类中有一个“channel”字段,那么在hbm配置中应该将其命名为“channel”,尽管它是复合主键的一部分
<class name="Parent" table="PARENT">
<composite-id >
<key-property name="vendor" type="string">
<column name="VENDOR" />
</key-property>
<key-property name="channel" type="string">
<column name="CHANNEL" />
</key-property>
<key-property name="createdate" type="Date">
<column name="CREATEDATE" />
</key-property>
<key-property name="refid" type="Long">
<column name="REFID" />
</key-property>
<composite-id />
<list name="childs" table="CHILD" lazy="true" fetch="select">
<key column="REFID" />
<index column="REFID" />
<one-to-many class="Child" />
</list>
此外,还应在映射的另一端定义多个关系。子类中可以有一个正确的父实例(而不仅仅是一个ID)根据hibernate配置xml文件中的java类字段更改属性名称。如果java类中有一个“channel”字段,那么在hbm配置中应该将其命名为“channel”,尽管它是复合主键的一部分
<class name="Parent" table="PARENT">
<composite-id >
<key-property name="vendor" type="string">
<column name="VENDOR" />
</key-property>
<key-property name="channel" type="string">
<column name="CHANNEL" />
</key-property>
<key-property name="createdate" type="Date">
<column name="CREATEDATE" />
</key-property>
<key-property name="refid" type="Long">
<column name="REFID" />
</key-property>
<composite-id />
<list name="childs" table="CHILD" lazy="true" fetch="select">
<key column="REFID" />
<index column="REFID" />
<one-to-many class="Child" />
</list>
此外,还应在映射的另一端定义多个关系。并且子类中可以正确地存在父实例(而不仅仅是ID)
<class name="Parent" table="PARENT">
<composite-id >
<key-property name="vendor" type="string">
<column name="VENDOR" />
</key-property>
<key-property name="channel" type="string">
<column name="CHANNEL" />
</key-property>
<key-property name="createdate" type="Date">
<column name="CREATEDATE" />
</key-property>
<key-property name="refid" type="Long">
<column name="REFID" />
</key-property>
<composite-id />
<list name="childs" table="CHILD" lazy="true" fetch="select">
<key column="REFID" />
<index column="REFID" />
<one-to-many class="Child" />
</list>