1

今朝早くコードをテストしていたところ、解決できないように見えるものを見つけました。

私の SKU クラスには、文字列を取るためのカスタム ID ジェネレーター (割り当て済み) があります。

static mapping = {
    id generator: 'assigned', name: 'sku'
}

ID「 1234445 」でSKUオブジェクトを作成しました(通常、私のSKU IDはダッシュ文字と数字の混合ですが、テスト目的で文字列として数字を使用しました)

SKU.get(" 1234445 ") を実行しようとすると、次のエラーが表示されます。

間違ったタイプの ID が提供されました

予想: クラス java.lang.String、クラス java.lang.Long を取得

明らかに私は文字列を提供しました.getが実行されたときにどういうわけかそれをLongとして扱っているため、エラーが発生します。

SKU.id (私の場合は Sku.sku) の数字のように見える文字列を使用しない以外に、これを解決する方法についてのアイデアはありますか?

4

3 に答える 3

2

を使用したい場合String idは の代わりに使用してくださいString skuSKU.get("123445")

class SKU {
    String id
    static mapping = {
        id generator: 'assigned'
    }
}

def newSku = new SKU()
newSku.id = '123445'
newSku.save(flush: true)

println SKU.get("123445")

sku識別子として具体的に使用する必要がある場合は、使用します

SKU.findBySku("123445")

あなたが今持っているマッピングで(質問で述べたように)。

于 2013-09-28T18:09:40.627 に答える
0
SKU.get("1234445" as String)

動作するはずです

于 2013-09-28T17:20:06.413 に答える