Grails由多个列查找
我有一个简单的标记类,只有两个字段,name和valueGrails由多个列查找,grails,gorm,Grails,Gorm,我有一个简单的标记类,只有两个字段,name和value class Tag { String name String value } 我试图呈现一个XML,在这里我想通过findBy…Ilike()搜索这两个参数的一部分 但这并没有给我任何结果。如果我只使用一个参数,它将按预期工作: def getXml = { render Tag.findAllByNameIlike("%${params.name}%") as XML } 我的下一个问题可能是过滤结果,并将其
class Tag {
String name
String value
}
我试图呈现一个XML,在这里我想通过findBy…Ilike()搜索这两个参数的一部分
但这并没有给我任何结果。如果我只使用一个参数,它将按预期工作:
def getXml = {
render Tag.findAllByNameIlike("%${params.name}%") as XML
}
我的下一个问题可能是过滤结果,并将其他“类似”标记添加到返回列表中,那么有没有一种方法可以通过以下方式解决上述问题:
def getXml = {
list = Tag.findAllByNameIlike("%${params.name}%")
list.add(Some other stuff)
list.sortBy(Some thing, maby name length)
}
对于多字段
ilike
查询,您可以使用:
这将返回名称与提供的名称匹配且值与提供的值匹配的标记
域列表
可能会让你做大部分你需要的过滤,但是你也可以考虑使用一些Groovy。
< p>对于你的多字段<代码> ILIKE < /Cord>查询,你可以使用: 这将返回名称与提供的名称匹配且值与提供的值匹配的标记
域列表
可能会让你做大部分你需要的过滤,但是你也可以考虑使用一些Groovy。
你必须把限制(InLead,NotNull等)放在动态取景器的每个字段上。如果不这样做,它将假定相等。以下是您正在寻找的内容:
Tag.findallbynameilikeandvaluelike(“%${params.name}%”,“%${params.value}%”)
您必须对动态查找器的每个字段设置限制(InList、NotNull等)。如果不这样做,它将假定相等。以下是您正在寻找的内容:
Tag.findallbynameilikeandvaluelike(“%${params.name}%”,“%${params.value}%”)
这两个答案都很好。我两个都试过了,但我得说我最喜欢WitchCritia。看起来很灵活
def result = Tag.withCriteria {
if(params.name != null)
ilike('name', "%${params.name}%")
if(params.value != null)
ilike('value', "%${params.value}%")
}
result.add(new Tag('name': "something"))
render result as XML
两个答案都很好。我两个都试过了,但我得说我最喜欢WitchCritia。看起来很灵活
def result = Tag.withCriteria {
if(params.name != null)
ilike('name', "%${params.name}%")
if(params.value != null)
ilike('value', "%${params.value}%")
}
result.add(new Tag('name': "something"))
render result as XML
您是否尝试使用withCriteria方法或标准来处理您的请求?您是否尝试使用withCriteria方法或标准来处理您的请求?谢谢您的回答。这似乎是一种简单而灵活的方式。对不起,我也是stackoverflow的新手。看来我不得不把我的回复作为一个新的答案发布:)谢谢你的回答。这似乎是一种简单而灵活的方式。对不起,我也是stackoverflow的新手。看来我不得不把我的回复作为一个新的答案发布:)
def result = Tag.withCriteria {
if(params.name != null)
ilike('name', "%${params.name}%")
if(params.value != null)
ilike('value', "%${params.value}%")
}
result.add(new Tag('name': "something"))
render result as XML