grails findAll()方法

| 我正在使用类似“ 0”的SQL方法:
MyDomainClass.findAll(\"firstname=\'George\' and lastname=\'kuo\' and username=\'kjlop\'\"),
但我有问题: 当值以数字开头(例如,当age = \'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)
    //---------
我想知道groovy更改find​​All()方法有什么办法吗? 如果有人知道解决方案,请帮忙。 提前致谢。
已邀请:
您应该能够在域对象上运行动态查找程序方法来实现所需的功能。 例:
MyDomainClass.findAllByFirstnameAndAge(\'Dan\', 25)
这适用于所有数据类型和枚举。
您可以尝试使用Grails示例:
MyDomainClass.findAll(\"from DomainTable as b where b.firstname=:firstname and b.age=:age\", [firstname:\'Dan Brown\', age: 25]
注意:我不知道您是否输错了它,但是\ '25 \'是一个字符串,因此它不能是
age=\'25\'
编辑: 我不知道这是怎么工作的,但是如果要查找具有多个属性的对象,则应该使用createCriteria()。
def c = MyDomainClass.createCriteria()
def results = c.list {
    like(\"firstName\", \"George%\")
    like(\"age\", \"25\");
}
EDIT2:抱歉,hbase插件不支持createCriteria。根据您的情况,我认为尝试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)
完整的示例可以在插件页面中找到。

要回复问题请先登录注册