2011-01-24 5 views
0

엔티티에 대해 Seam-gen에서 생성 한 EntityQuery - addressListAddress입니다.Seam - 엔티티 쿼리 - 동적 제한

주소에 다음과 같은 필드가 있습니다. streetNamecity이므로 Seam-gen에서 제한을 생성합니다.

다음 제한 사항으로 내 EntityQuery를 확장하고 싶습니다. #{addressList.keyVal}으로 얼굴 컨텍스트에서 설정할 수있는 'keyVal'필드가 있습니다. keyValaaa bbb ccc입니다. 이제 쿼리에 모든 항목을 찾는 데 사용할 제한이 추가되어야합니다.

streetName like '%aaa%' or streetName like '%bbb%' or streetName like '%ccc%' 
or city like '%aaa%' or city like '%bbb%' or city like '%ccc%' 

이 작업을 수행하는 방법에 대한 제안이 있으십니까? 나는 정말로 갇혀있다.

답변

0

문제는 EntityQuery가 제한 사항에서 다중 값 바인딩을 지원하지 않는다는 것입니다. https://issues.jboss.org/browse/JBSEAM-1065

기준 클래스를 창의적으로 사용하여이 문제를 해결할 수 있습니다.

경우에 따라 쿼리를 수정할 수 있습니다.

private static final String[] RESTRICTIONS = { 
    "lower(concat(s.firstName, concat(' ', s.lastName))) like concat('%', 
       concat(lower(#{criteria.staffName}), '%'))"}; 

는 희망이 당신에게 몇 가지 아이디어를 제공합니다 : 나는 하나의 staffName 입력을 가지고 예를 들어, 내가 입력과 같은 입력 또는 직원 성 등의 직원 이름, 나는 이런 내 쿼리를 작성할 수있는 쿼리해야 .

+0

아마도 일부 컨텍스트 매개 변수 (내 경우 '# {addressList.keyVal}')의 값을 가져올 수 있는지 알 수 있습니다. 그런 다음 getEjbql() 메서드를 재정 의하여 값에 따라 몇 가지 제한 사항을 추가 할 수 있습니다. – androdevo