8

休止状態の明示的なポリモーフィズムの問題に直面しています。ポリモーフィズム アノテーションを使用して明示的に設定しましたが、マップされたクラスの get() とコレクションを使用すると、常にすべてのサブクラスを取得します。休止状態の「show_sql」出力に、左結合を持つすべてのサブクラスが表示されます。どうしたの?ドキュメントを間違って理解していますか? それとも、休止状態 4 のバグですか? 休止状態 4 とポリモーフィズム アノテーションを使用した例は見たことがありません。

sessionFactory.getCurrentSession().get(Node.class, 111); // return subclasses!


@Entity
@Table(name="Nodes")
@Inheritance(strategy = InheritanceType.JOINED)
@Polymorphism(type= PolymorphismType.EXPLICIT)
public class Node implements Serializable {
    ...
}



@Entity
@Table(name="Persons")
public class Person extends Node {
}


@Entity
@Table(name="Networks")
public class Network extends Node {
}

...and other subclasses...
4

2 に答える 2

1

PolymorphismType.EXPLICITの定義を見ると、次のように書かれています。

EXPLICIT: このエンティティは、明示的に要求された場合にのみ取得されます。

サブクラスを非表示にするには、基本クラスではなく、サブクラスに EXPLICIT で注釈を付ける必要があります。

于 2013-08-21T16:32:20.167 に答える