Postgres 9.0的Hibernate隔离级别

Har*_*hra 6 postgresql hibernate jdbc

我们正在使用Postgres 9.1.0和Hibernate 3.2.5.

我已下载最新的JDBC驱动程序JDBC4 Postgresql Driver, Version 9.1-901.

我设置了hibernate隔离属性.

<property name="connection.isolation">2</property>
Run Code Online (Sandbox Code Playgroud)

意思是

2=READ_COMMITTED
Run Code Online (Sandbox Code Playgroud)

但它在尝试访问数据库时给我错误.

Caused by: org.postgresql.util.PSQLException: Cannot change transaction isolation level in the middle of a transaction.
at org.postgresql.jdbc2.AbstractJdbc2Connection.setTransactionIsolation(AbstractJdbc2Connection.java:821)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:103)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
Run Code Online (Sandbox Code Playgroud)

如果我删除隔离级别属性.它工作正常.任何帮助,将不胜感激

a_h*_*ame 5

查看错误消息:" 无法在事务中间更改事务隔离级别 ",似乎Hibernate启动事务(例如,通过运行SELECT),然后尝试更改隔离级别.

这似乎是PostgreSQL集成Hibernate中的一个错误,因为它应该在打开连接后首先更改隔离级别,或者在更改隔离级别之前通过发出提交或回滚来结束任何已启动的内容.

您唯一的选择(除了打开错误报告)是省略隔离设置.因为READ_COMMITTED是Postgres的默认隔离级别,不应该有所作为.