我有一个有三个班的模型,A班,父母班和孩子班。hasMany父级,而子级扩展父级。
我需要处理UI上的复杂逻辑来创建模型,并决定发布一个具有相同域模型结构的JSON对象。现在,在客户端的javascript对象中,我有一个A的实例,它有一些与Child相关的实例。
当我发布javascript对象,并将其序列化为JSON字符串时,控制器接收到它,然后我会: def a= new (request.JSON);
A实例是创建的,但是在hasMany关系中,它有父实例而不是子实例,因此我丢失了来自子实例的所有属性值。
我如何告诉Grails创建子实例而不是父实例?
更新
控制器接收到的request.JSON结构如下所示:
[
name: name,
group: none,
where: [
[
codeOperand: in_list,
archetypeId: openEHR-EHR-EVALUATION.problem_diagnosis.v1,
codeValues: [
aaa,
bbb
],
path: /data[at0001]/items[at0005]/value,
class: Child1,
terminologyIdValues: [
cie
],
rmTypeName: DV_CODED_TEXT,
terminologyIdOperand: eq
],
[
magnitudeValues: [
1,
22
],
archetypeId: openEHR-EHR-OBSERVATION.blood_pressure.v1,
path: /data[at0001]/events[at0006]/data[at0003]/items[at0004]/value,
unitsOperand: eq,
class: Child2,
magnitudeOperand: between,
rmTypeName: DV_QUANTITY,
unitsValues: [
mmHg
]
]
]
]在本例中,我有两个从父类继承的类Child1和Child2。
我在对象中添加了"class“属性,因为我读到它可能解决了问题,但它没有解决问题。
当我打印与A实例关联的对象时,我得到了正确的实例数,但是所有的类都是“父类”,如您所见,一些值被绑定,但都是父类的属性。
[
(archetypeId: openEHR-EHR-EVALUATION.problem_diagnosis.v1,
path: /data[at0001]/items[at0005]/value,
rmTypeName: DV_CODED_TEXT,
class: Parent),
(archetypeId: openEHR-EHR-OBSERVATION.blood_pressure.v1,
path: /data[at0001]/events[at0006]/data[at0003]/items[at0004]/value,
rmTypeName: DV_QUANTITY,
class: Parent)
]发布于 2017-10-14 16:29:02
最后,我创建了遍历JSON对象并创建域实例的代码。
https://stackoverflow.com/questions/31332242
复制相似问题