5

ユーザーテーブルがあり、user_detail1対1のマッピング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 の主キーが外部キーではない 1 対 1 の関連付けの場合、所有側で多対 1 の関連付けとして表す必要があります。

Hibernate ドキュメントから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"/>

したがって、1 対 1 を使用してこの関連付けをマップする方法はありません。所有側 (外部キーを保持するテーブル) でマッピングを多対 1 に変更する必要があります。

于 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 に答える