2014-12-19 27 views
0

我有這樣兩個簡單的領域類:Grails的,MongoDB的格姆,空嵌入對象

class Isa95EquipmentSpecification { 

    String equipmentClass 
    String equipment 
    String description 
    Float quantity 
    String quantityUOM 
    List<Isa95EquipmentSpecificationProperty> equipmentSpecificationProperties 

    static embedded = ['equipmentSpecificationProperties'] 

    static constraints = { 
     equipment nullable: true, validator: {val, obj -> if (null == val && null == obj.equipmentClass) return ['bothNullable']} 
     equipmentClass nullable: true, validator: {val, obj -> if (null == val && null == obj.equipment) return ['bothNullable']} 
     description nullable: true 
     quantity nullable: true 
     quantityUOM nullable: true 
    } 
} 

和子域:

class Isa95EquipmentSpecificationProperty { 
    String name 
    String description 
    String value 
    String valueUOM 
    Double quantity 
    String quantityUOM 

    static constraints = { 
     name nullable: false 
     description nullable: true 
     value nullable: false 
     valueUOM nullable: false 
     quantity nullable: true 
     quantityUOM nullable: true 
    } 
} 

我希望建立一個由文檔絲毫嵌入式特性我可以保存它只對父級執行save()操作,但它不起作用。

我嘗試Grails的控制檯上運行:

def prop1 = new isa95.productdefinition.Isa95EquipmentSpecificationProperty(name: 'prop-1', value: 'mad', valueUOM: '-') 
def prop2 = new isa95.productdefinition.Isa95EquipmentSpecificationProperty(name: 'prop-2', value: 12.32, valueUOM: 'kilograms') 
def spec = new isa95.productdefinition.Isa95EquipmentSpecification(equipment: '41500', description: 'eq-test', equipmentSpecificationProperties: [prop1, prop2]) 
spec.save(failOnError: true) 

腳本運行正常,但在數據庫中,我發現這一點。我希望能夠找到填充嵌套列表equipmentSpecificationProperies:

{ "_id" : NumberLong(9), "description" : "eq-test", "equipment" : "14500", "equipmentSpecificationProperties" : [ null, null ], "version" : 0 } 
+0

我會從你的'Isa95EquipmentSpecification'類 – injecteer 2014-12-19 13:57:21

+0

@injecteer我刪除了'hasMany'但刪除'hasMany'得到了一些結果 – skioppetto 2014-12-19 16:25:26

+0

''equipmentSpecificationProperties「:[null,null]'這讓我想到,這些對象被作爲子文檔保存下來。你應該能夠在mongo瀏覽器中看到帶有一些元素的equipmentSpecificationProperties數組。 – injecteer 2014-12-19 16:29:28

回答

0

指定列表類型:

List<Isa95EquipmentSpecificationProperty> equipmentSpecificationProperties