使用Grails ORM克隆表数据时出现HibernateOptimisticLockingFailure异常

时间:2015-05-22 07:57:32

标签: mysql grails

在我们的项目中,我们正在克隆表数据"和"后续表"在层次结构中。为此,在域对象中,我们正在编写一个" clone()"方法,创建类的对象,然后在创建的对象中设置属性。我们在代码中做的是这样的(这是"虚拟Book.groovy类的克隆对象"表示数据库中的书表)

public Book clone(def newParent) {
    def clonedBook = new Book(properties)
    clonedBook.parent=newParent
    clonedBook.<childObject>=<childObject>*.clone(clonedBook)
    return clonedBook
}

&#34; clone()&#34; Book的方法是从父表的域类的克隆方法调用的,它依次调用&#34; clone()&#34;子域类的方法。在数据库中,外键被设为ON DELETE NO ACTION

因此,在以这种方式运行时,我遇到了完整性约束违规异常,它通过将&#34; ON DELETE NO ACTION更改为ON DELETE CASCADE&#34;来解决。然后我开始得到&#34; HibernateOptimisticLockingFailure异常&#34;。这也是通过不通过&#39;属性来解决的。在&#34; clonedBook&#34;的构造函数中,但在&#34; clonedBook&#34;中明确设置Book.groovy的属性。例如,&#34; clone()&#34;方法是

public Book clone(def newParent) {
    def clonedBook = new Book()    //properties not passed here
    clonedBook.name = name   //explicitly set
    clonedBook.price = price  //explicitly set
    ...
}

但我无法找到问题以这种方式解决的原因,或者前一种方式出了什么问题。我正在使用&#34; Grails 2.4.4&#34;和MySQL数据库

0 个答案:

没有答案