[英]Grails domain Named query for a list
我有一個簡單的Grails應用程序。 我有幾個領域,例如以下。 場景是“人有很多電話”(但人類沒有將電話列表作為變量:懶惰單端關聯)。
class Person implements Serializable {
....
}
class Telephone implements Serializable{
String number
static belongsTo = [person : Person]
static mapping = {
.....
person lazy: false
}
}
現在,我有一個必須通過電話號碼搜索此人的要求。 我有一個字符串電話列表。 我需要讓所有擁有至少一個該電話號碼的人。 我需要編寫namedQueries,但是我對這個領域還很陌生。 是否可以為此編寫命名查詢? 還是我需要在Person類中定義的映射為
set telephone
static hasMany = [
telephone: Telephone
]
以及如何定義namedQueries以適合我的要求
提前致謝
我相信它能夠看到您正確的人的電話
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()
我會堅持使用單端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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.