JPA单表继承:无法在基础实体上查询

时间:2012-10-23 13:25:22

标签: hibernate jpa jpa-2.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

在这种情况下,查询结果将仅包含同一子实体的实例,但我有其他查询,其结果将是“混合”。

有没有办法像这样进行查询?

1 个答案:

答案 0 :(得分:1)

您正在尝试检索根级父Entity。如果是,则需要在@DiscriminatorValue(value = "your_base")实体类中添加Base。即使没有它的子类,也没关系。它已在here中发布。