2011-04-19 8 views
0

나는 findAll() SQL과 같은 방법을 사용하고 있습니다 :Grails의 findall은() 메소드

MyDomainClass.findAll("firstname='George' and lastname='kuo' and username='kjlop'"), 

하지만 내가 가지고 문제 :

값 (예를 들어 숫자로 시작할 때, 때 연령 = '2poj') 예외를 던졌습니다

나는 grails 1.3.2 및 gorm-hbase 0.2.4 플러그인을 사용하고 내 도메인 클래스 필드에는 String 유형이 있습니다. '0'.. '9', 'P'궁금

at org.grails.hbase.ghql.LexerRules.nextToken(LexerRules.java:125) 

at org.grails.hbase.finders.QueryStringTokenizer.tokenize(QueryStringTokenizer.groovy:59) 

at org.grails.hbase.finders.TokenizerStrategy$tokenize.call(Unknown Source) 
    //--------- 

발견이되어 끝내 변화 findall은() 메소드의 일에 어떤 식 으로든 : 범위에서 토큰 기대 : 여기

는 스택 추적입니다 ?

아무도 해결책을 알면 도와주세요. 미리 감사드립니다.

+0

나는 # 1을 거의 믿을 수 없다 - HQL 문이 적절하게 인용된다. 정확히 사용중인 코드입니까? # 2도 작동해야합니다. 만약 당신이 hsql에 그것을 시도? 3. MyDomainClass.findAllByFirstnameAndLastname ('George', 'kuo')을 사용해 볼 수 있습니까? 열거 형을 포함하여 모든 간단한 유형에 대해 작동해야합니다. –

+0

@Victor 답장을 보내 주셔서 감사합니다 ... MyDomainClass.findAllByFirstnameAndLastname() 메서드를 시도해 보았습니다. 숫자로 값이 시작되었지만 열거 형 값과 함께 작동하지 않았을 때 작동했습니다. – Bella

+0

그 외에도 여러 속성을 찾아야합니다. – Bella

답변

0

당신은 Grails example 같은 시도 할 수 있습니다 :

MyDomainClass.findAll("from DomainTable as b where b.firstname=:firstname and b.age=:age", [firstname:'Dan Brown', age: 25] 

공지 사항 : I가 '25'은 문자열 당신이 그것을 잘못 입력하면 모르겠지만, 그것이 될 수 없도록 age='25'

편집 : 어떻게 작동하지 않을지 모르지만 여러 속성으로 찾으려면 createCriteria()을 사용해야합니다.

def c = MyDomainClass.createCriteria() 
def results = c.list { 
    like("firstName", "George%") 
    like("age", "25"); 
} 

EDIT2 : 죄송합니다, createCriteria은 HBase를 플러그인을 지원하지 않습니다. 귀하의 상태에 따라 DynamicFinderFilter를 사용해 보는 것이 적합하다고 생각합니다.

// all books written by Dan Brown or J K Rowling 
    DynamicFinderFilter filterList = new FinderFilterList(Operator.OR) 

    DynamicFinderFilter filter1 = new Filter('author', 'Dan Brown') 
    filterList.addFilter(filter1) 

    DynamicFinderFilter filter2 = new Filter('author', 'J K Rowling') 
    filterList.addFilter(filter12) 

    results = Book.findAll(filterList) 

완전한 예는 plugin page에서 찾을 수 있습니다.

+0

@ Hoàng Long 내 도메인 클래스의 모든 필드에는 String 유형이 있습니다 ... MyDomainClass.findAll ("DomainTable의 b 위치, b.firstname = : firstname 및 b. age = : age ", [firstname : 'Dan Brown', age : 25]), 작동하지 않습니다 ... hbase 문서에서이 구문을 찾았지만 [link] http : // www를 찾지 못했습니다. .grails.org/plugin/gorm-hbase ... 나는 그것을 지원하지 않는다고 생각한다. – Bella

+0

@Bella : 어쩌면 내가 어딘지 잘못 생각한 것 같습니다.신경 쓰지 마라, 나는 같은 결과에 대해 createCriteria()를 사용할 수 있다고 생각한다 : –

+0

@ Hoàng Long 작동하지 않는다 ... hbase이 기준도 지원하지 않는다고 생각한다. – Bella

0

도메인 개체에 dynamic finder method을 실행하여 필요한 것을 얻을 수 있어야합니다.

예 :

MyDomainClass.findAllByFirstnameAndAge('Dan', 25) 

이 모든 데이터 유형 및 열거 작동합니다.

+0

@Benjiamin 작동하지만 여러 속성 (예 : MyDomainClass.findAll ("username = '12a58n'및 firstname = 'George'및 lastname = 'Kuo'및 City = 'myCity'또는 City = 'hisCity') ")) – Bella