繁体   English   中英

我应该如何使用Hibernate从JPQL查询中引用内部枚举(在实体中定义)?

[英]How should I refer to inner enums (defined within an entity) from a JPQL query using Hibernate?

我有一个实体类如下:

package stuff;

@Entity
class Thing {

    @Id
    @GeneratedValue 
    private Long id;

    @Basic
    @Enumerated
    private State state;

    public enum State {
        AWESOME,
        LAME
    }
}

如何使用JPQL和Hibernate选择状态为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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM