我正在使用 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/