[英]Grails Many-To-Many - Problems of dynamic finder
我希望你能幫助我。 不幸的是,谷歌並沒有幫助我,我在stackoverflow上的搜索也沒有:-(
我有兩個具有多對多關系的DomainClasses HumanResource和Task 。
型號定義:
任務 :
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.