我有以下实体:
@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
在这种情况下,查询结果将仅包含同一子实体的实例,但我有其他查询,其结果将是“混合”。
有没有办法像这样进行查询?
答案 0 :(得分:1)
您正在尝试检索根级父Entity
。如果是,则需要在@DiscriminatorValue(value = "your_base")
实体类中添加Base
。即使没有它的子类,也没关系。它已在here中发布。