Hibernate 可以从同一控制器调用两个单独的DAO吗?

Hibernate 可以从同一控制器调用两个单独的DAO吗?,hibernate,entity,controllers,Hibernate,Entity,Controllers,Spring是否允许您使用相同的控制器更新方法更新数据并将数据保存到两个单独的Oracle表中?或者,您是否必须使用两个单独的控制器来执行此操作 我有一个控制器,需要用同一个控制器更新方法将数据更新并保存到两个单独的表中。例如: model = widgetDAO.update(model); widgetHistoryDAO.save(model2); 第一个update语句的模型位于控制器的表单对象上。 第二个update语句的模型model2只是一个历史记录,因此它不会返回给控制器的调

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

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

model = widgetDAO.update(model);

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

执行此操作时,我尝试在控制器的开头通过一条新语句创建model2:

WidgetHistory model2 = new WidgetHistory();
我可以毫无问题地调用update和save语句一次,但是当我第二次调用update和save语句时

widgetHistoryDAO.save(model2);
语句导致运行时错误:

Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist:......
有人看到过这样的错误吗


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

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