0

これは、私が取り組んでいる実際のプロジェクトの縮小例です。次のドメインがあります。

class PhoneNumber {

    String cn
    PhoneType phoneType
    String phoneNumber

    static constraints = {
    }
}
class PhoneType {

    String phoneType
    String cn
    static constraints = {
    }

    static mapping = {
        id name: 'cn'
        id generator: 'uuid'
    }
}

シンプル、電話、電話タイプ。

PhoneType は cn の代替 ID 列を使用します

デフォルトのRESTコントローラーを生成しますgrails generate-all PhoneType PhoneNumber

私は残りのプロファイルプロジェクトを使用しています。PhoneType を問題なく作成できます。

 curl 'http://localhost:8080/phoneType'  -H 'Content-Type: application/json' -X POST -d '{"phoneType":"gg"}'
 {"cn":"2a10618564d228300164d234a4980003","phoneType":"gg"}

問題は、REST を使用してこの PhoneType で PhoneNumber を作成できないことです。(デフォルトの「id」列を使用して) 代替 ID を指定しない場合は、指定できます。

 curl 'http://localhost:8080/phoneNumber'  -H 'Content-Type: application/json' -X POST -d '{"cn":"1","phoneNumber":"9995551212", "phoneType":{"cn":"2a10618564d228300164d234a4980003"}}'
{"message":"Property [phoneType] of class [class PhoneType] cannot be null","path":"/phoneNumber/index","_links":{"self":{"href":"http://localhost:8080/phoneNumber/index"}}}

これは機能しますが

 curl 'http://localhost:8080/phoneNumber'  -H 'Content-Type: application/json' -X POST -d '{"cn":"1","phoneNumber":"9995551212", "phoneType":{"id":"2a10618564d228300164d234a4980003"}}'

これは機能するはずで、フレームワークのバグなのか、それとも識別子として「id」を持たない grails で REST リソースを操作できるようにするために追加の構成が必要なのか疑問に思います。

ご指摘ありがとうございます。

4

2 に答える 2