我应该如何使用 Hibernate 从 JPQL 查询中引用内部枚举(在实体中定义)?
How should I refer to inner enums (defined within an entity) from a JPQL query using Hibernate?
我有一个实体 class 如下:
package stuff;
@Entity
class Thing {
@Id
@GeneratedValue
private Long id;
@Basic
@Enumerated
private State state;
public enum State {
AWESOME,
LAME
}
}
我如何使用 JPQL 和 Hibernate select 所有具有 AWESOME 状态的事物?
select t from Thing t where t.state=stuff.Thing.State.AWESOME
...给出错误...
org.hibernate.hql.internal.ast.QuerySyntaxException: Invalid path: 'stuff.Thing.State.AWESOME'
使用以下成语:
select t from Thing t where t.state=stuff.Thing$State.AWESOME
Type$InnerType
是 Java 内部类型的命名约定。
当您尝试使用点表示法时,Hibernate 假定您正在尝试访问嵌套属性,在这种情况下(正确地)会失败。
select t from Thing t where t.state='AWESOME'
我有一个实体 class 如下:
package stuff;
@Entity
class Thing {
@Id
@GeneratedValue
private Long id;
@Basic
@Enumerated
private State state;
public enum State {
AWESOME,
LAME
}
}
我如何使用 JPQL 和 Hibernate select 所有具有 AWESOME 状态的事物?
select t from Thing t where t.state=stuff.Thing.State.AWESOME
...给出错误...
org.hibernate.hql.internal.ast.QuerySyntaxException: Invalid path: 'stuff.Thing.State.AWESOME'
使用以下成语:
select t from Thing t where t.state=stuff.Thing$State.AWESOME
Type$InnerType
是 Java 内部类型的命名约定。
当您尝试使用点表示法时,Hibernate 假定您正在尝试访问嵌套属性,在这种情况下(正确地)会失败。
select t from Thing t where t.state='AWESOME'