grails、mongodb gorm、空嵌入对象
我有两个简单的域类:grails、mongodb gorm、空嵌入对象,mongodb,grails,gorm,gorm-mongodb,Mongodb,Grails,Gorm,Gorm Mongodb,我有两个简单的域类: class Isa95EquipmentSpecification { String equipmentClass String equipment String description Float quantity String quantityUOM List<Isa95EquipmentSpecificationProperty> equipmentSpecificationProperties
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
}
}
我希望通过嵌入属性来构建一个合成文档,我可以在父级上运行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)
脚本运行正确,但在数据库中我发现了这一点。我希望找到使用嵌套列表填充的EquipmentSpecificationProperties:
{ "_id" : NumberLong(9), "description" : "eq-test", "equipment" : "14500", "equipmentSpecificationProperties" : [ null, null ], "version" : 0 }
指定列表类型:
List<Isa95EquipmentSpecificationProperty> equipmentSpecificationProperties
列出设备规格属性
我想从您的ISA95设备规范中删除有许多
class@injecteer我删除了hasMany
,但得到了一些结果“equipmentSpecificationProperties”:[null,null]
这让我想到,这些对象正在作为子文档持久化。如果我调用spec.save()
prop1/prop2未持久化,您应该能够在mongo浏览器中看到equipmentSpecificationProperties数组和一些元素。如果我明确调用prop1.save()
和prop2.save()
,它们将存储在Isa95EquipmentSpecificationProperty集合中。在这两种情况下,我都能找到“equipmentSpecificationProperties”:[null,null]
。我使用MongoShell查询mongodb,我希望在EquipmentSpecificationProperties中至少找到一些引用否,您不应该调用prop.save()
。您所说的是什么意思在设备规格属性中至少找到一些参考资料?不应该有任何引用,道具将直接保存为子文档
List<Isa95EquipmentSpecificationProperty> equipmentSpecificationProperties