0

次のエンティティがあります。

@Entity
@Table(name = "TABLENAME")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="discriminator", discriminatorType=DiscriminatorType.STRING)
public class Base { ... }

@Entity
@DiscriminatorValue("value1")
public class SubEntity1 extends Base {}

@Entity
@DiscriminatorValue("value2")
public class SubEntity2 extends Base {}

結果の実際の型を知らずにクエリを作成する必要があります。何かのようなもの:

select b from Base b where b.discriminator=? and ...

私はこの例外を受け取ります:Object with id: 31 was not of the specified subclass: packagename.Base

この場合、クエリ結果には同じサブエンティティのインスタンスのみが含まれますが、結果が「混合」される他のクエリがあります。

このようなクエリを作成する方法はありますか?

4

1 に答える 1

1

ルート レベルの親を取得しようとしていますEntity。その場合は、エンティティ クラスを追加する必要があり@DiscriminatorValue(value = "your_base")ますBase。そのサブクラスがなくてもOKです。すでにここに投稿されています。

于 2012-10-23T21:06:51.857 に答える