是否可以设置一个不同的值,然后将'auto'设置为hibernate propery - “connection.release_mode”?
我们使用Spring和hibernate,当我尝试在这个属性中定义 - 'after_transaction'(当我在会话工厂定义中定义hibernate属性时),在运行时我得到一个异常(Spring异常)唯一有效的值(在这个道具的弹簧术语是'on_close'。这个事实给我们带来了许多麻烦。我们使用session-per-request模式(意思是“客户端向服务器发送请求,Hibernate持久层正在运行.Hibernate打开一个新的Session,所有数据库操作都在这个工作单元中执行。”({ {3}})。当定义on_close时 - 每个服务正在分配连接(没有重用连接)。
我们使用HibernateTransactionManager与TransactionInterceptor一起管理事务。我们使用AnnotationSessionFactoryBean(我们的会话工厂)处理会话,我尝试在会话工厂中定义“hibernateProperties”部分中的decleration - > connection.release_mode = after_transaction。在服务器尝试加载会话工厂的运行时,我遇到了这个异常:
org.springframework.transaction.InvalidIsolationLevelException: HibernateTransactionManager is not allowed to support custom isolation levels: make sure that its 'prepareConnection' flag is on (the default) and that the Hibernate connection release mode is set to 'on_close' (SpringTransactionFactory's default). Make sure that your LocalSessionFactoryBean actually uses SpringTransactionFactory: Your Hibernate properties should *not* include a 'hibernate.transaction.factory_class' property!
at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:515)
... 121 more
为什么春天这样做?并且有旁路
任何建议都将受到赞赏。
答案 0 :(得分:1)
要设置不同的连接释放模式,您必须创建一个文件
src/main/resources/hibernate.properties
并设置值
hibernate.connection.release_mode=AFTER_STATEMENT
可以找到其他可用值here