java - playframework 上的 JPA 枚举查询错误

标签 java jpa playframework

我正在使用 java playframework 1.2.4 进行项目,并且我有一个 @Entity 类。它看起来像

@Entity
public class EmployeeType extends Model {
    public static enum TYPE { HOURLY, DAILY, MONTHLY };
    public static enum NATIONALITY { LOCAL, FOREIGN };
    @Required
    @Enumerated(EnumType.STRING)
    public TYPE type;
    @Required
    @Enumerated(EnumType.STRING)
    public NATIONALITY nationality;
}

在我的 Controller 类中,我想使用 2 个枚举属性获取 EmployeeTypes 列表。 查询看起来像

Query query = JPA.em().createQuery("SELECT e FROM EmployeeType e where " +
            "e.nationality = :nationality " +
            "and e.type = :type");
query.setParameter("nationality", NATIONALITY.LOCAL);
query.setParameter("type", TYPE.HOURLY);

List<models.EmployeeType> employeeType = query.getResultList()

给出此错误:发生 IllegalArgumentException:参数值 [LOCAL] 与类型 [models.EmployeeType$NATIONALITY] 不匹配

我应该做什么?

最佳答案

该错误可能是因为您的枚举嵌套在您的实体中。您需要通过实体名称来访问它。

您可以将 setParameter 代码更改为:-

query.setParameter("nationality", EmployeeType.NATIONALITY.LOCAL);
query.setParameter("type", EmployeeType.TYPE.HOURLY);

关于java - playframework 上的 JPA 枚举查询错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14708128/

相关文章:

java - CriteriaQuery 返回 nullpointerexception mockito

java - 错误 : 'Please fix the version conflict either by updating the version....'

json - 通过将项目添加到其包含数字数组的分支之一来更新 JsObject

java - 仅在开发模式下 Play Framework java.lang.NoClassDefFoundError

java - 使用自定义上下文路径的 Spring Boot - 无法访问静态 Web 文件

java - Hibernate @BatchSize 和 JPA Criteria API

Java EE,如何正确实现更新?

jpa - 不能将 @IdClass 属性用于 @ManyToOne 关系

scala - 将 Enumeratee 转换为 Future[List] Scala

java - cron 作业是否重叠?