블로그 이미지
Max.

calendar

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

Notice

2011.02.22 10:21 개발관련
Roo Entity의 객체관계에서 sorting은 @OrderBy("title DESC") 형태로 가능하다. 그러나 Entity 자체를 정렬하는 것은 없다. 기본으로 생성되는 _Roo_Entity.aj에서는 기본적인 CRUD만 있고, 정렬관련된 옵션은 없다. 그럼 finder를 생각해 볼수 있는데, finder 역시 현재까지는 특별히 지원하는 정렬기능이 없다. Entity의 속성중 특정 속성을 조건으로 검색하는 것은 되지만, 정렬까지는 지원하지 않는다. 관련해서 이슈로 등록((https://jira.springsource.org/browse/ROO-1592)되었지만, 진행된 내용은 아직 없다. 즉, 현재 Roo 버전으로는 가능한 방법이 없다는 것이다.

자동완성 기능으론 할수 없으니, 손수만들면 된다. 좀 거시기하긴 하지만, 정렬기능이 지원될때까지 어쩔수 없다. 방법은 여러가지가 있겠지만, 가장 적당해 보이는 것이 finder 메서드를 직접 구현하는 것이다. 해당 Entity에 static 으로 구현하면 된다. 이때 HQL를 원하는데로 구현하면 된다. 아마도 자동완성의 한계를 이렇게 구현할수 있을 것이다. 
    public static List<Article> findArticleSortEntries(int firstResult, int maxResults) {
        return entityManager().createQuery("select o from Article o Order By o.id DESC", Article.class).setFirstResult(firstResult).setMaxResults(maxResults).getResultList();
    }

또다른 방법으론 Nicholas Albion 이 제안한 필터 방식(https://jira.springsource.org/browse/ROO-241)인데 이는 자동생성을 염두해둔 방법으로 제안한 것이다. 

finder add --finderName findEmployeesByDepartment --orderBy "userName ASC" --filterClass ~.server.domain.EmployeePagingFilter

//(annotation might be formatted something like this)
@RooEntity(finders = { {name="findEmployeesByDepartment",orderBy="userName ASC",filterClass=EmployeePagingFilter} })
public class Employee { ... }

저작자 표시
신고
posted by Max.
TAG