我正在使用grails 2.4.2。我需要基于类似查询的关键字创建一个列表。假设这是一个例子>>
def results = c.list(max: iDisplayLength, offset: iDisplayStart) {
and {
// eq("activeStatus", ActiveStatus.ACTIVE)
}
if (sSearch) {
or {
ilike('title', sSearch)
ilike('shortDesc', sSearch)
}
}
}
在这里,我可以使用sSearch params按字段搜索。但是假设在这个域中我有一个名为Parent parent的父域实例。现在,如果我还想用sSearch检查parent.typeName的值,那我该怎么做呢。我尝试过如下>>
or {
ilike('title', sSearch)
ilike('shortDesc', sSearch)
ilike('parent.typeName', sSearch)
}
但它给出了错误。实际上我想为数据表做这个。将父类字段保留在搜索选项下。有没有办法用父类对象做到这一点?你能帮忙吗?
我的域名 音频域>>
package streaming
class Audio {
static mapping = {
table('audio')
version(false)
}
String title
// StreamType streamType
String shortDesc
String filePath
String imagePath
String imageName
int downloadCount
boolean isActive
static belongsTo = [streamType: StreamType]
static constraints = {
title(nullable: false, blank: false,unique: true)
shortDesc(nullable: false, blank: false)
filePath(nullable: false, maxSize: 2000)
imagePath(nullable: false, maxSize: 2000)
imageName(nullable: false)
downloadCount(nullable: true)
}
String toString(){
return title
}
}
StreamType域>>
package streaming
class StreamType {
static mapping = {
table('stream_type')
version(false)
}
String typeName
static hasMany = [audio: Audio, video: Video]
static constraints = {
typeName(nullable: false, blank: false)
}
String toString(){
return typeName
}
}
答案 0 :(得分:1)
您可以StreamType
关闭streamType
或alias
来访问or {
ilike('title', sSearch)
ilike('shortDesc', sSearch)
streamType {
ilike('typeName', sSearch)
}
}
域名属性。
关闭 -
or {
ilike('title', sSearch)
ilike('shortDesc', sSearch)
createAlias('streamType', '_streamType')
ilike('_streamType.typeName', sSearch)
}
别名 -
index.php
答案 1 :(得分:0)
def results = c.list(max: iDisplayLength, offset: iDisplayStart) {
and {
eq("activeStatus", ActiveStatus.ACTIVE)
}
if (sSearch) {
or {
ilike('title', sSearch)
ilike('shortDesc', sSearch)
Parent{
ilike('typeName', sSearch)
}
}
}
}
不确定Parent是否进入或者访问父属性。