1

table_AにマップされるBean_AというBeanクラスがあり、このBean_AクラスはベースBeanクラスから継承され、ベースBeanクラスには、Bean_Aクラスと一緒にデータベースに保存されるunique_reference_key変数があります。Bean_Aおよびtable_Aのunique_reference_keyフィールド用の休止状態ファイルをすでに用意しています。

Bean_Aオブジェクトを保存するときに、このunique_reference_key変数がデータベースに確実に保存されるように、HibernateでベースBeanクラスをマップする方法を知っていますか?この基本Beanクラスはデータベース内のどのテーブルにもマップされておらず、基本Beanを「表す」テーブルはないことに注意してください。

この質問を投げる前に、私は次の記事を調べましたが、それでもそれについての手がかりを得ることができませんでした。

  1. Hibernateは継承マッピングを簡素化します
  2. Hibernate第5章基本的なO/Rマッピング
4

2 に答える 2

1

コードを追加すると、説明がより明確になります。しかし、ドキュメントで説明されているMappedSuperclassアノテーションを探しているだけだと思います。

5.1.6.4。スーパークラスからプロパティを継承する

これは、通常のマップされたエンティティとして含めずに(つまり、このエンティティの特定のテーブルがない場合)、テクニカルスーパークラスまたはビジネススーパークラスを介して共通のプロパティを共有するのに役立つ場合があります。そのために、それらを@MappedSuperclassとしてマップできます。

@MappedSuperclass
public class BaseEntity {
    @Basic
    @Temporal(TemporalType.TIMESTAMP)
    public Date getLastUpdate() { ... }
    public String getLastUpdater() { ... }
    ...
}

@Entity class Order extends BaseEntity {
    @Id public Integer getId() { ... }
    ...
}
于 2012-05-10T14:45:28.337 に答える
0

ベースBeanプロパティをHibernateのBean_Aにマップする方法に関する解決策を見つけました。

休止状態の場合:

<class name="com.dao.pojo.BaseBean" abstract="true">
   <id name="theId" type="string">
      <column name="primary_key" length="15" />
   </id>
   <property name="unique_ref_key" type="java.lang.String" column="unique_ref_key"/>

   <union-subclass name="com.dao.pojo.Bean_A" table="table_A" lazy="false">
      ...
   </union-subclass>
</class>

theIdは元々Bean_Aからのものであり、BaseBeanに移動されていることに注意してください。新しいフィールドunique_ref_keyがtable_A内に作成されます。

JAVAの場合:

public abstract class BaseBean {
   private String theId;
   private String unique_ref_key;

   // getter and setter
}

public class Bean_A extends BeseBean {
   ...
}

このソリューションが他の人に役立つことを願っています。

于 2012-05-16T02:24:10.857 に答える