0

私は3つのテーブルを持っています:

    TABLE BOOKING (
  BOOK_ID  
  PERSONAL_ID                             
  ORGINIZER                      
  TITLE
    PRIMARY KEY ( BOOK_ID )
    FOREIGN KEY ( PERSONAL_ID)
);

TABLE ROOM
(
  ID
  BOOK_ID
  FROM                  
  UNTIL                        
  QUANTITY                   
  PRIMARY KEY ( ID) 
  FOREIGN KEY ( BOOK_ID)
);

TABLE PERSONAL
    (
      ID
      PERSONAL_ID
      NAME
      SURNAME
      EMAIL         
      PRIMARY KEY ( ID) 
    );

テーブル ROOM を次のようにマッピングします。

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">

<class name="Depp.Domain.Booking, Depp.Core" >
    <id name="ID" unsaved-value="0" column="ID">
        <generator class="native">
            <!--<param name="sequence">GLOBALSEQUENCE</param>-->
        </generator>
    </id>
    <property name="Title" ></property>
    <property name="TitleEnabled" type="yes_no">
        <column name="THEMA_ENABLED"/>
    </property>
    <property name="ORGANIZER" column="PERSONAL_ID" not-null="true" ></property>
    <bag name="ROOM" inverse="true" lazy="true" cascade="all-delete-orphan" >
        <key column="BOOK_ID"/>
        <one-to-many class="Depp.Domain.ROOM, Depp.Core"/>
    </bag>

</class>

私の質問は、テーブルをどのようにマッピングできPERSONALますか? 私の問題はPERSONAL、FOREIGN KEYがないため、マップする方法がわからないことPERSONALです。そのテーブルからNAMESURNAMEを取得する必要があります。EMAIL

誰かが私を助けてくれることを願っています

ありがとう!

4

2 に答える 2

2

Booking と Personal の間の関連付けは、単方向の多対 1 の関連付けとしてマップできます。

結合する個人の主キー以外のフィールドを指定するには、property-ref属性を使用します。この場合、Personal クラスの ID ではなく、データベース列 PERSONAL_ID に対応するのは personalId 属性です。

プロパティ参照(オプション)

この外部キーに結合された関連クラスのプロパティの名前。指定しない場合、関連付けられたクラスの主キーが使用されます。

Hibernateに関するこのスタックオーバーフローの質問を参照してください- なぜ一対一を表すために多対一を使用するのですか?

マッピング

<class name="Booking" >
    <id name="ID" unsaved-value="0" column="ID">
        <generator class="native">
            <!--<param name="sequence">GLOBALSEQUENCE</param>-->
        </generator>
    </id>
    ...
    <many-to-one name="personal" column="PERSONAL_ID"   property-ref="personalId" not-null="true"/>
    ...
</class>

<class name="Personal">
    <id name="id" column="ID">
        <generator class="native"/>
    </id>
    
    <property name="personalId" column="personal_id" />
    <property name="name" />
    <property name="surname" />
    <property name="email" />
    
</class>

ジャワ

public class Booking{

    private Long id;

    private Personal personal;
    ...
}



public class Personal 
{
    Long id;
        
    private Long personalId;   
    private String name;        
    private String surname;
    private String email;
}
于 2012-08-04T15:57:40.997 に答える
0

HQLを使用してそのテーブルオブジェクトのリストを取得するのはどうですか?マップされたオブジェクトを取得するには、FKが定義されている必要があります。そうでない場合、Hibernateはどのように列をマップできますか?

于 2012-08-03T06:10:28.857 に答える