5

我有一个用户表和一个user_detail具有一对一映射user_detail表的表有一个user_id用于此关系的字段,该字段存储相应用户的 id 字段值。

如何hbm为这种关系编写休眠文件?

更新

我的问题是用户的主键是id,user_detail 的外键是user_id

我在互联网用户 user_id 中获得的所有示例作为用户主键,与其他表中的外键相同

4

4 回答 4

6

在 User.hbm 中,您需要像这样声明与 UserDetails 的关系:

<one-to-one name="user_detail" foreign-key="user_id" class="UserDetail full name "/>

希望这对你有帮助

于 2015-04-07T04:09:27.073 回答
3

对于用户映射......

<?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>
于 2013-02-04T07:39:14.613 回答
3

对于 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"/>

因此,无法使用一对一映射此关联,您必须在拥有方(表持有外键)将映射更改为多对一。

于 2018-11-28T10:28:22.557 回答
0
<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/

请找到它。

于 2013-02-04T07:35:49.290 回答