JPA枚举在playframework上查询ERROR

时间:2013-02-05 12:58:36

标签: 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;
}

在我的控制器类中,我希望使用我的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]

我该怎么办?

1 个答案:

答案 0 :(得分:1)

错误可能是因为您的enum嵌套在您的实体中。您需要在实体名称上访问它。

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

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