1対1の主キーの一方向の関連付けを休止状態にする

使用範囲:ある表の主キーは、別の表の1:1の主キーに対応します。
1-1アソシエーションは主キーの関連付けに基づいていますが、主キーに関連付けられている永続クラスには独自の主キー生成ストラテジーを持たせることはできません。主キーは関連クラスによって生成されます。 さらに、属性を関連付けるために1対1要素を追加するには、1対1要素に制約付き= "true"属性を追加する必要があります。これは、主キーが関連付けられたクラスによって生成されることを示します。

まず、導入されたモデルperson(Person)はIDカード(IDCard)に対応しています。
第2に、エンティティ(ゲッター、セッターメソッドを省略)

public class Person {
プライベートint personid;
プライベートString name;
私的年齢;

プライベートIDCard iDCardPk; //外部キーの関連付け
}

パブリッククラスIDCard {
プライベートint idCardid;
プライベートString idCardName;
}

第三に、テーブルモデル

mysql> desc idcard;
+ --------------- + -------------- + ------ + ----- + ----- ---- + ---------------- +
|フィールド|タイプ|ヌル|キー|デフォルト|余分|
+ --------------- + -------------- + ------ + ----- + ----- ---- + ---------------- +
| idcardid | int(11)| NO | PRI | NULL | auto_increment |
| idcardname | varchar(255)| YES | | NULL | |
+ --------------- + -------------- + ------ + ----- + ----- ---- + ---------------- +

mysql> desc person;
+ ---------- + -------------- + ------ + ----- + --------- + ------- +
|フィールド|タイプ|ヌル|キー|デフォルト|余分|
+ ---------- + -------------- + ------ + ----- + --------- + ------- +
| personid | int(11)| NO | PRI | | |
| name | varchar(255)| YES | | NULL | |
| age | int(11)| YES | | NULL | |
+ ---------- + -------------- + ------ + ----- + --------- + ------- +

マッピング方法:ID生成戦略をPersonで設定します。
<hibernate-mapping>
<class name = "com.lavasoft.Person" table = "PERSON">
<id name = "personid" column = "presonid">
<! - プライマリキーの関連付けに基づいて、プライマリキーの生成方法は外部クラスであり、関連するクラスのプライマリキーに基づいて生成されます。 - >
<generator class = "foreign">
<! - 関連する永続クラスのプロパティ名 - >
<param name = "property"> idCardpk </ param>
</ generator>
</ id>
<プロパティ名= "名前" />
<プロパティ名= "年齢" />
<! - 1-1の関連付けをマップするために使用されます - >
<one-to-one name = "idCardPk" constrained = "true" />
</ class>
</ hibernate-mapping>

<hibernate-mapping>
<class name = "com.lavasoft.IDCard" table = "idcard">
<id name = "idCardid">
<generator class = "identity" />
</ id>
<プロパティ名= "idCardName" />
</ class>
</ hibernate-mapping>
第六に、試験方法

パブリッククラスTest_11pk {
public static void main(String [] args){
Person p1 =新しいPerson();

p1.setAge(21);
p1.setName( "p1");

IDCard card1 =新しいIDCard();
card1.setIdCardName( "kexcking");

p1.setIdCardpk(card1);

セッションセッション= HibernateUtil.getCurrentSession();
トランザクションtx = session.beginTransaction();
session.save(card1);
session.save(p1);
tx.commit();
HibernateUtil.closeSession();
}
}

カテゴリ:Default 時間:2018-05-16 人気:0
この記事では、 Hibernate、MySQL

関連記事

Copyright (C) socapnw.com, All Rights Reserved.

Socapnw All Rights Reserved.

processed in 0.132 (s). 11 q(s)