我有一个用户表和一个user_detail
具有一对一映射user_detail
表的表有一个user_id
用于此关系的字段,该字段存储相应用户的 id 字段值。
如何hbm
为这种关系编写休眠文件?
更新
我的问题是用户的主键是id
,user_detail 的外键是user_id
我在互联网用户 user_id 中获得的所有示例作为用户主键,与其他表中的外键相同
我有一个用户表和一个user_detail
具有一对一映射user_detail
表的表有一个user_id
用于此关系的字段,该字段存储相应用户的 id 字段值。
如何hbm
为这种关系编写休眠文件?
更新
我的问题是用户的主键是id
,user_detail 的外键是user_id
我在互联网用户 user_id 中获得的所有示例作为用户主键,与其他表中的外键相同
在 User.hbm 中,您需要像这样声明与 UserDetails 的关系:
<one-to-one name="user_detail" foreign-key="user_id" class="UserDetail full name "/>
希望这对你有帮助
对于用户映射......
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 25 April 2011 7:52:33 PM by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.rais.User" table="USER" catalog="mydb">
<id name="userId" type="java.lang.Integer">
<column name="USER_ID" />
<generator class="identity" />
</id>
<property name="userName" type="string">
<column name="USER_NAME" length="10" not-null="true" unique="true" />
</property>
<property name="userCode" type="string">
<column name="USER_CODE" length="20" not-null="true" unique="true" />
</property>
<one-to-one name="userDetail" class="com.rais.UserDetail"
cascade="save-update"></one-to-one>
</class>
</hibernate-mapping>
用于 UserDetail 映射。
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 25 April 2011 7:52:33 PM by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.rais.UserDetail" table="USER_DETAIL"
catalog="mydb">
<id name="userId" type="java.lang.Integer">
<column name="USER_ID" />
<generator class="foreign">
<param name="property">user</param>
</generator>
</id>
<one-to-one name="user" class="com.rais.User"
constrained="true"></one-to-one>
<property name="compName" type="string">
<column name="COMP_NAME" length="100" not-null="true" />
</property>
<property name="compDesc" type="string">
<column name="COMP_DESC" not-null="true" />
</property>
<property name="remark" type="string">
<column name="REMARK" not-null="true" />
</property>
</class>
</hibernate-mapping>
对于 UserDetail 的主键不是外键的一对一关联,我们必须将其表示为拥有方的多对一关联。
从休眠文档https://docs.jboss.org/hibernate/orm/3.2/reference/en/html/mapping.html
或者,具有唯一约束的外键,从 Employee 到 Person,可以表示为:
<many-to-one name="person" class="Person" column="PERSON_ID" unique="true"/>
并且可以通过将以下内容添加到 Person 映射来使这种关联成为双向的:
<one-to-one name"employee" class="Employee" property-ref="person"/>
因此,无法使用一对一映射此关联,您必须在拥有方(表持有外键)将映射更改为多对一。
<one-to-one name="user_detail" class="give the full specified className with package declaration" cascade="save-update"></one-to-one>
这是一个很好的例子
http://www.mkyong.com/hibernate/hibernate-one-to-one-relationship-example/
请找到它。