Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java playframework上的JPA枚举查询错误_Java_Jpa_Playframework - Fatal编程技术网

Java playframework上的JPA枚举查询错误

Java playframework上的JPA枚举查询错误,java,jpa,playframework,Java,Jpa,Playframework,我正在使用JavaPlayFramework1.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.

我正在使用JavaPlayFramework1.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()
Query Query=JPA.em().createQuery(“从EmployeeType e where中选择e”+
“e.国籍=:国籍”+
“和e.type=:type”);
query.setParameter(“国籍”,national.LOCAL);
query.setParameter(“type”,type.HOURLY);
List employeeType=query.getResultList()
给出此错误:IllegalArgumentException发生:参数值[LOCAL]与类型[models.EmployeeType$National]不匹配


我该怎么办?

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

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

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

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

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

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