服务方法时的问题我有这2种方法在同一服务类:的Grails:调用其他服务方法
boolean meth1(DomClass dom1) { //parameter is an instance of domain class DomClass ... meth2(dom1) ... dom1.delete(flush: true) ... return true } boolean meth2(DomClass dom1) { ... dom1.changeSomeProperty dom1.save(flush:true) return true }
的问题是,上线叫dom1.delete(flush: true)
程序与deleted object would be re-saved by cascade (remove deleted object from associations)
崩溃。
现在,我不知道Hibernate的非常好,但我的猜测是,这两种方法是创建一个新的事务,并METH1有第一笔交易,并meth2第二个。事实上,如果我删除dom1.save
一切正常。我现在的问题是:我可以让meth1包含meth2中的所有代码,但这意味着我会复制很多代码(在我的真实示例中,我想在许多地方重复使用某些逻辑)。我怎么能重用代码的一种方法,通过将所有方法栈在同一个事务中运行的服务(如果这是真正问题所在,否则:“有什么问题”)
可让我们看到dom1的域映射以及引用它的任何其他类。 – hvgotcodes 2011-02-23 00:41:20