2017-12-12 2 views
0

!= 뒤에 전체 클래스 경로 (com.xxxx.State.Finish)를 넣으려고했지만 도움이되지 않았습니다.@Query에서 enum을 상수로 사용하는 방법

@Query("select c from CustomOrder c where c.dealer = :roleName and 
    c.nextManager = null and c.currentState != Finish") 
List<CustomOrder> findOpenOrder(@Param("roleName") String roleName); 

엔티티 :

@Getter 
@Enumerated(EnumType.STRING) 
CustomOrderEnums.State currentState; 

와 ENUM

public enum State { 
    Open, Finish 
} 
+0

당신이 어떤 예외가

@Query("select c from CustomOrder c where c.dealer = :roleName and c.nextManager = null and c.currentState != 'Finish'") 

난 그냥 대신 @Query를 사용이 간단하게 사용될 수 있다는 것을 발견했다? –

+0

'... 그리고 c.currentState = com.xxxx.CustomOrderEnums.State.Finish'가 유용합니다. –

+0

@MaciejKowalski'org.hibernate.hql.internal.ast.InvalidPathException : 잘못된 경로 : 'com.xxx.CustomOrderEnums.Status.Finish''는 IDE에서 @@ Query를 눌러 Finish 정의를 열 수 있습니다. – Tiina

답변

0
@Query("select c from CustomOrder c where c.dealer = :roleName and 
    c.nextManager = null and c.currentState != com.xxx.FooEnum.Finish") 

FooEnum은 최고 수준이 아닌 내측 하나이어야한다. 내부 클래스 여야한다면 ' 따옴표로 묶은 문자열을 사용하십시오 ('없이 시도하지 않았습니다).

List<User> findIdByRoleRoleAndProvinceType(String role, ProvinceEnum.ProvinceType provinceType); 

이 엔티티 사용자입니다 :

@Entity 
public class User { 
    Role role; // entity has a String field role; 
    Province province; // entity has a ProvinceEnum.ProvinceType field type. 
... 
} 
관련 문제