簡體   English   中英

Grails多對多-動態查找器問題

[英]Grails Many-To-Many - Problems of dynamic finder

我希望你能幫助我。 不幸的是,谷歌並沒有幫助我,我在stackoverflow上的搜索也沒有:-(

我有兩個具有多對多關系的DomainClasses HumanResourceTask

型號定義:

任務

class Tasks {

    String name

    static belongsTo = [HumanResource]
    static hasMany = [humanResources: HumanResource]
    //also tried but didn't help -> static fetchMode = [humanResources:"eager"]
}

人力資源

class HumanResource {

    String name

    static hasMany = [tasks: Tasks]

}

我還嘗試使用mapping = {}在id字段上添加索引,但我也認為這不是解決方案,它沒有幫助,我認為id字段上已經有索引。

因此,我做過的而不是行得通的是,找到適合給定任務的所有人力資源! 任務來自服務,並且已經通過“ static fetchMode = [tasks:“ eager”]“”在服務模型中獲取了!

控制器代碼:

def listHumanResourcesFromTasks = {
        def list = HumanResource.findAllByTasks(service.getTasks())

        //and I tried also with an own HashMap but didn't work as well

}

我總是收到帶有SQL-GrammarException的錯誤“ org.springframework.dao.InvalidDataAccessResourceUsageException ”。 但是我真的不知道為什么。 “ service.getTasks()”對象已滿(如我用fetchMode = [tasks:“ eager”]所寫)...

如果有人能給我勝利的提示,那將是非常棒的。

非常感謝您的寶貴時間。

最好的祝願,

馬可

不支持這種查詢-通常,您需要使用HQL或條件查詢。 但是,由於您具有雙向關系,因此這一特定操作很容易。 你可以得到所有的HumanResource實例為集合Tasks與此:

def resources = service.getTasks().collect { it.humanResources }.flatten() as Set

它必須是一個Set因為同一個HumanResource實例可能會出現多次,因此您需要將List壓縮為唯一的實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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