簡體   English   中英

Grails域名查詢列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM