列表的 Grails 域命名查询
Grails domain Named query for a list
我有一个简单的 Grails 应用程序。我有几个域,例如以下。场景是人有很多电话(但是人 class 没有电话列表作为变量:惰性单端关联)。
class Person implements Serializable {
....
}
class Telephone implements Serializable{
String number
static belongsTo = [person : Person]
static mapping = {
.....
person lazy: false
}
}
现在我有一个需求,我必须通过电话号码搜索这个人。我有一个字符串电话号码列表。我需要找到所有至少拥有该电话号码之一的人。我需要编写 namedQueries,但我对这个领域还很陌生。是否可以为此编写命名查询?或者我是否需要在 Person class 中定义为
的映射
set telephone
static hasMany = [
telephone: Telephone
]
以及应如何定义 namedQueries 以满足我的要求
提前致谢
我会坚持使用单端 o2m,并提出一个命名查询,例如:
class Telephone {
...
static namedQueries = {
byPerson{ Person p ->
eq 'person', p
}
}
}
并这样称呼它:
Person p = Person.get 1111
def telephones = Telephone.byPerson p
另一方面,您可以使用简单的 findAllBy*
查询:
Person p = Person.get 1111
def telephones = Telephone.findAllByPerson p
我相信它能够看到来自某人的电话你是对的
set telephone
static hasMany = [
telephone: Telephone
]
需要定义,但一旦定义你就可以做:
static namedQueries = {
withSameTelephone {telephoneNumber ->
telephone{ eq 'number' telephoneNumber }
}
}
并像这样使用它:
Person.withSameTelephone('091511234512').list()
我认为你需要传递一个列表,所以
static namedQueries = {
withSameTelephoneInList {telephoneNumberList ->
telephone{ 'in'( 'number' telephoneNumber) }
}
}
所以你可以这样做:
Person.withSameTelephoneInList(['091511234512','091511234513','091511234514']).list()
我有一个简单的 Grails 应用程序。我有几个域,例如以下。场景是人有很多电话(但是人 class 没有电话列表作为变量:惰性单端关联)。
class Person implements Serializable {
....
}
class Telephone implements Serializable{
String number
static belongsTo = [person : Person]
static mapping = {
.....
person lazy: false
}
}
现在我有一个需求,我必须通过电话号码搜索这个人。我有一个字符串电话号码列表。我需要找到所有至少拥有该电话号码之一的人。我需要编写 namedQueries,但我对这个领域还很陌生。是否可以为此编写命名查询?或者我是否需要在 Person class 中定义为
的映射set telephone
static hasMany = [
telephone: Telephone
]
以及应如何定义 namedQueries 以满足我的要求
提前致谢
我会坚持使用单端 o2m,并提出一个命名查询,例如:
class Telephone {
...
static namedQueries = {
byPerson{ Person p ->
eq 'person', p
}
}
}
并这样称呼它:
Person p = Person.get 1111
def telephones = Telephone.byPerson p
另一方面,您可以使用简单的 findAllBy*
查询:
Person p = Person.get 1111
def telephones = Telephone.findAllByPerson p
我相信它能够看到来自某人的电话你是对的
set telephone
static hasMany = [
telephone: Telephone
]
需要定义,但一旦定义你就可以做:
static namedQueries = {
withSameTelephone {telephoneNumber ->
telephone{ eq 'number' telephoneNumber }
}
}
并像这样使用它:
Person.withSameTelephone('091511234512').list()
我认为你需要传递一个列表,所以
static namedQueries = {
withSameTelephoneInList {telephoneNumberList ->
telephone{ 'in'( 'number' telephoneNumber) }
}
}
所以你可以这样做:
Person.withSameTelephoneInList(['091511234512','091511234513','091511234514']).list()