Grails GORM的关系

时间:2014-09-22 16:40:05

标签: grails gorm

嗨,我真的不明白,这不起作用,但我99%肯定它是一个GORM问题。

这是我的域名:

 Class Product{
    String name
    static hasMany = [parts:Parts]
    static mappedBy = [parts:'product']
 }


 Class Parts{
    Product product
    static hasMany = [alternatives:Alternatives] 
 }

所以产品由零件组成,零件指向产品 当我执行以下操作时,它不会保存到数据库中。

 Product p = new Product(name:"test")
 Product part1 = Product.get(2)
 Product part2 = Product.get(3)
 Parts c =  new Parts(product: part1).save(flush:true,failOnError:true)
 Parts c2 =  new Parts(product: part2).save(flush:true,failOnError:true)

 p.addToParts(c)
 p.addToParts(c2)

 p.save(flush:true,failOnError:true)

这不会引发任何错误,但也不会将任何内容持久存储到数据库中。

任何想法?

1 个答案:

答案 0 :(得分:0)

Product p = new Product(name: "test")
Product part1 = Product.get(2)
Product part2 = Product.get(3)

p.addToParts(new Parts(product: part1))
p.addToParts(new Parts(product: part2))
p.save(flush: true, failOnError: true)

执行此操作的最佳方法是在.addToParts()来电中创建新部件。

您的static belongsTo = Product课程中似乎应该有Parts。 (只允许多对多关系中的一方持续存在可以减少混淆)