0

我希望你们能帮助我。不幸的是,谷歌没有帮助我,我在 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"] 编写的)...

如果有人能给我获胜的提示,那就太棒了。

非常感谢您的时间。

最良好的祝愿,

马可

4

1 回答 1

0

不支持此类查询 - 通常您需要使用 HQL 或条件查询。但是这个特别的很容易,因为你有一个双向的关系。您可以通过以下方式获取HumanResource集合的所有实例Tasks

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

它必须是 a,Set因为同一个HumanResource实例可能会出现多次,因此您需要将 List 压缩为唯一的实例。

于 2011-07-31T03:55:23.390 回答