你能从同一个控制器中调用两个独立的DAO吗?

时间:2015-04-15 19:39:49

标签: hibernate entity controllers

Spring是否允许您在同一控制器update()方法中更新数据并将数据保存到两个单独的Oracle表中?或者,您是否必须使用两个单独的控制器才能执行此操作?

我有一个控制器,需要更新并将数据保存到同一个控制器update()方法中的两个单独的表中。例如:

model = widgetDAO.update(model);

widgetHistoryDAO.save(model2);

第一个更新语句的模型位于控制器的表单对象上。 第二个更新语句的模型model2只是一个历史记录,因此它不会返回给控制器的调用者,因为数据不存储在表单对象屏幕上。

当我这样做时,我尝试在控制器的开头通过一个新语句创建model2

WidgetHistory model2 = new WidgetHistory();

我可以毫无问题地调用update和save语句一次,但是当我第二次调用update和save语句时,

widgetHistoryDAO.save(model2);

语句导致运行时错误:

Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist:......

有人看到过这样的错误吗?

感谢您提供有关如何最有效地保存/更新同一控制器中不在同一表单对象中的多个表的建议(即用户可以添加,更新,查询的同一屏幕上的屏幕变量)。 / p>

1 个答案:

答案 0 :(得分:0)

我将新语句从控制器的开头移动到持有更新和保存调用的方法。没有发生运行时错误。我也做了研究,并没有发现任何禁止将新语句与Spring结合使用的内容,尽管使用Spring的一个目的是避免尽可能多地调用new!