2012-02-20 6 views
2

私はフィールドHibernateは:どのように逆参加エンティティ(1対1)を取得する


ID 
PROJECT_BASELINE_ATTRIBUTES_ID (FK for table PROJECT_BASELINE_ATTR) 

このテーブルには、それぞれ次のようなマッピング


<hibernate-mapping package="com.initech.db.model"> 
    <class name="com.initech.db.model.Project" table="PROJECT"> 

     <id name="id" column="id" type="java.lang.Long"> 
      <meta attribute="use-in-tostring">true</meta> 
      <generator class="sequence"> 
       <param name="sequence">PROJECT_ID_SEQ</param> 
      </generator> 
     </id> 

     <many-to-one name="projectBaselineAttributes" column="PROJECT_BASELINE_ATTRIBUTES_ID" class="com.initech.db.model.ProjectBaselineAttributes" cascade="all" not-null="true"> 
      <meta attribute="use-in-tostring">true</meta> 
     </many-to-one>^ 

    </class> 
</hibernate-mapping> 

を持っていると、テーブルプロジェクトを持っていますProject.javaクラスにはフィールドがあります


private Long id; 
private ProjectBaselineAttributes projectBaselineAttributes; 

また、フィールドを含むことができるPROJECT_BASELINE_ATTR


ID 

Hibernateマッピング:

​​

各ProjectBaselineAttributes.javaクラスとして、


private Long id; 
private Set projects = new HashSet(); 

現在のマッピングが理想的ではないフィールドを有します2つのテーブルの関係は実際には1対1ですが、ProjectBaselineAttributesにはProのセットがあります1つのProjectBaseLineattributesには常に1つのProjetが存在しますが、


private Long id; 
private Project project; 

答えて

1

ここではどのように詳細Hibernate documentationのセクションです:私はProjectBaselineAttributes.javaは次のようになりますクラスはすなわちように、関連するプロジェクト「単独」を得ることができるようにマッピングがProjectBaselineAttributesのためにどのようなものになるはずです外部キーを使用してそのような双方向1対1関連付けをマップする。

<class name="Person"> 
    <id name="id" column="personId"> 
     <generator class="native"/> 
    </id> 
    <many-to-one name="address" 
     column="addressId" 
     unique="true" 
     not-null="true"/> 
</class> 

<class name="Address"> 
    <id name="id" column="addressId"> 
     <generator class="native"/> 
    </id> 
    <one-to-one name="person" 
     property-ref="address"/> 
</class> 

create table Person (personId bigint not null primary key, addressId bigint not null unique) 
create table Address (addressId bigint not null primary key) 
1

このexampleに記載されているように、以下のマッピングを試すことができます。親Bean内の

、子豆で

<one-to-one name="one2oneSubA1" class="com.manu.hibernate.mappings.domain.ASub1" cascade="all" 
      property-ref="parent"/> 

<many-to-one name="parent" 
      class="com.manu.hibernate.mappings.domain.AMain" column="a_id" 
      unique="true" cascade="save-update" /> 
関連する問題