我的数据库中有一列具有此值“Bob; Steve; Fred”。该列是一个字符串(不是列表),我希望能够构建一个查询,该查询为我提供了我通过参数传递的值。
这是我的域名:
String name (values that contain name is: Bob;Steve;Fred)
我想做的是建立一个查询,该查询仅使我获得在方法中传递的名称:
这是我正在尝试做的方法:
def updateName(String myName) {
MyDomain md = MyDomain.findByName(myName)
if (!md) {
log.warn "name not found [" + name+ "]"
}
}
有了这个,我总是得到
md = null
;例如,我想要的是。如果我通过我想要的myName = Bob,则在我的字符串名称中找到具有三个名称(Bob; Steve; Fred)的Bob:
MyDomain md = MyDomain.findByName(Bob)
md should be = Bob
提前致谢
最佳答案
INTRO
尽管@tim_yates指出了对现有问题的一个答案,但是使用我的答案以及您设置域类的方法并非最佳方法可能会出现问题。
如何在域中设置列表
Grails域类具有hasMany selector,因此您的域类应如下所示:
class MyDomain {
static hasMany = [names: String]
List names
}
如何添加名称
当具有域对象并想要向列表添加另一个名称时,可以使用
myDomainObject.addToNames(thename)
如何按名称检索如前所述,这需要createCriteria():
def results = MyDomain.createCriteria().list{
"in"("names",someName)
}
这将返回所有域对象的列表。如果要从中获取一些数据,则可以使用
each
循环浏览,并使用it
引用一项:results.each{
println it.names
}
关于grails - 如何只获取已在grails中设置了一些值而不是列表的String的一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36865411/