2

次のクラスがあるとします。

abstract class Fruit {
    String name

    static mapping = {
        discriminator column: 'type'
    }

class Banana extends Fruit {
    static mapping = {
        discriminator: 'Banana'
    }
}

class Apple extends Fruit {
    static mapping = {
        discriminator: 'Apple'
    }
}

JSON 文字列を指定して、DB で特定の Fruit インスタンスを見つけることができるように、検索アルゴリズムを実装する必要があります。例えば:

{
    "type": "Apple"
    "name": "Green"
}

また

{
    "type": "Banana"
    "name": "Green"
}

問題は、果物が同じ名前を持つ可能性があることです。これを検索すると、次のようになります。

Fruit.getByName('Green')

Appleまたは を返す場合がありBananaます。次のようなタイプに基づいて、タイプでフィルタリングできる必要があります。

Fruit.getByNameAndType('Green', 'Apple')

Grailsでこれを行うにはどうすればよいですか?

4

3 に答える 3

2

生成されたデータベースを見てみましょう。

classFruit クラスの基準検索で使用できる列があります。

多分これは次のように機能します

   Fruit.findAllByColorAndClassLike('Green','%Apple')

それも

于 2012-12-06T06:33:33.603 に答える
0

これはあなたのニーズを満たすべきですか?

def fruits = Fruit.findAll("from Fruit where type = :type and name = :name", [type: "Apple", name: "Green"])
于 2012-12-06T09:33:21.360 に答える
0
Apple.getByName('Green')

動作するはずです。あなたはそれを試しましたか?

于 2012-12-06T03:04:17.607 に答える