【问题标题】:grails GORM relationshipgrails GORM 关系
【发布时间】:2014-09-22 16:40:04
【问题描述】:

嗨,我真的不明白为什么这不起作用,但我 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)

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

有什么想法吗?

【问题讨论】:

  • 你不应该在Product 中有static hasMany = [parts:Parts] 吗?
  • 改变了它。在我的代码中就是这样。这仍然不起作用
  • 产品和零件之间是o2m还是m2m?

标签: grails grails-orm


【解决方案1】:
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() 调用中创建新部件。

您的Parts 类中似乎也应该有static belongsTo = Product。 (只允许多对多关系的一侧持续可以减少混乱)

【讨论】:

    猜你喜欢
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 2011-12-02
    相关资源
    最近更新 更多