0

皆さんが私を助けてくれることを願っています。残念ながらGoogleは私を助けてくれませんでした.stackoverflowでの私の検索もうまくいきませんでした:-(

多対多の関係を持つ 2 つの 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

Set同じHumanResourceインスタンスが複数回出現する可能性があるため、リストを一意のインスタンスに凝縮する必要があるため、それは である必要があります。

于 2011-07-31T03:55:23.390 に答える