質問

私は二つのオブジェクト

public class ParentObject {
 // some basic bean info
}

public class ChildObject extends ParentObject {
 // more bean info
}

それぞれのテーブルに対応するdiffernetテーブルの改善に取り組んでいます。●を使用していHibernateのクエリのChildObject、移植、親オブジェ。

私の定義は私のマッピング設定ファイルとしてい:

<hibernate-mapping>
<class name="ParentObject"
       table="PARENT_OBJECT">
   <id name="id"
       column="parent"id">
      <generator class="assigned"/>
   </id>
   <property name="beaninfo"/>
   <!-- more properties -->
   <joined-subclass name="ChildObject" table="CHILD_OBJECT">
       <key column="CHILD_ID"/>
       <!--properties again-->
   </joined-subclass>
</class>
</hibernate-mapping>

利用できまhibernateのクエリのテーブルな課題です。

使ってい

session.createQuery("from ChildObject as child ");

これらはすべて基本的なhibernate。しかし、私はこの問題はいる必要があるロックのすべてのテーブルを返します。

できる設定のロックタイプの子オブジェクトを返します。setLockType("子どもの",LockMode.?).しかし、せいただくか、道場にロックを親会社。

これまで、Hibernateからも周囲に数精神的な事業運営.ここでの問いはどんな場所にロックを親テーブル?

破壊も修復もおもしろくないうどうしていくべきなのかについてこないの状態に戻多形構造としています。

役に立ちましたか?

解決

しておいてロックの両方のテーブル?私はいかにしている内容に応じていない場合の代替を実現するソリューションと考えている。

このままでは、Hibernateは通常 みロックのルートテーブル ませんが用エキゾチックデータベース/弁にしてくれる。なので、チャンスだけでロックお ParentObject テーブルによ ChildObject.

更新 (コメント):

以降を使用エキゾチックなデータベース:-)に対応しておりません FOR UPDATE 書式では、Hibernateはロック"主"テーブルとして設定しなければならないクエリ("主"この場合においてテーブルマップされたエンティティの場 FROM 条項は、階層のルーなど ChildObject, ない ParentObject).またロックの両方のテーブル、めることをお勧めしたいみつ

  1. 電話 session.lock() 団体から得られたかを返します。このロックの テーブルの階層にしたい100%の確かだが技術的にいう""アップグレード"、ロックとして開催される。
  2. うチにより明示的にネーミング ParentObject テーブルのクエリを要求するロックモードです:

    String hql = "select c from ChildObject c, ParentObject p where c.id = p.id";
    session.createQuery(hql)
     .setLockMode("c", LockMode.READ)
     .setLockMode("p", LockMode.READ).list();
    
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top