これは、私が取り組んでいる実際のプロジェクトの縮小例です。次のドメインがあります。
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 リソースを操作できるようにするために追加の構成が必要なのか疑問に思います。
ご指摘ありがとうございます。