Java/JPA | 使用指定的继承类型进行查询

red*_*ull 12 java jpa entitymanager

我正在构建一个通用表"Sample"的查询,我有几个类型继承自此表"SampleOne","SampleTwo".我需要一个像这样的查询:

select s from Sample where s.type = :type
Run Code Online (Sandbox Code Playgroud)

其中type将是表的鉴别值.是否可以以任何方式(并避免创建特定于实体的查询,每个SampleOne,SampleTwo ...等)

我非常感谢本主题的任何意见,

亲切的问候,P.

axt*_*avt 15

在JPA 2.0中,您可以使用TYPE表达式(虽然目前它不适用于Hibernate中的参数,请参阅HHH-5282):

select s from Sample s where TYPE(s) = :type
Run Code Online (Sandbox Code Playgroud)

类似的Hibernate特定表达式是.class:

select s from Sample s where s.class = :type
Run Code Online (Sandbox Code Playgroud)