org.springframework.dao.InvalidDataAccessApiUsageException:写 只读模式下不允许操作(FlushMode.MANUAL):转动 您的会话进入FlushMode.COMMIT / AUTO或删除'readOnly'标记 来自交易定义。
我尝试将其在代码和xml中更改为另一个flushmode
,但它仍然是自动。
hibernatetemplate.getSessionFactory().openSession().setFlushMode(FlushMode.COMMIT);
和<prop key="org.hibernate.FlushMode">COMMIT</prop>
答案 0 :(得分:1)
在会话中,您的操作(其中一些是持久化或更新实体)很可能不在事务上下文中。
尝试将它们包含在:
中Session session = hibernatetemplate.getSessionFactory().openSession();
Transaction tx = session.beginTrasaction();
...
tx.commit();
session.close();
现在,当您开始事务时,刷新模式应该隐式设置为COMMIT / AUTO。
答案 1 :(得分:1)
你可以创建hibernateTemplate对象并覆盖excute方法
答案 2 :(得分:0)
实际上我解决了它
final Person object = new Person(id, name, password);
hibernateTemplate.execute(new HibernateCallback<Person>() {
public Person doInHibernate(Session session)
throws HibernateException {
session.save(object);
session.flush();
return object;
}
});