2013-02-05 2 views
1

나는 java playframework 1.2.4를 사용하는 프로젝트에서 작업하고 있으며 @Entity 클래스가 있습니다. 그것은JPA enum 쿼리 playframework에 대한 오류

@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 $ 국적]

내가 무엇을해야합니까?

답변

1

오류는 아마도 enum이 내 엔티티에 중첩되어 있기 때문일 수 있습니다. 엔티티 이름으로 액세스해야합니다.

당신은 당신의 setParameter 코드를 변경할 수 있습니다 : -

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

근무 감사합니다! – zi0408

+0

@ zi0408 .. 오신 것을 환영합니다 :) –