2016-09-26 82 views
2

我正在使用Hibernate 3.6通过SQL Server的Microsoft JDBC驱动程序访问Microsoft SQL Server的Java应用程序(JVM 1.6)遇到问题。Hibernate和MSSQL 2016问题

使用SQL JDBC驱动程序3.0和MSSQL 2008 - 2014时,所有工作都很好。

但是,当我试图使用MSSQL 2016年,最新的“微软JDBC驱动程序6.0”(sqljdbc4.jar) - 我得到一帮这些错误的:

org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) 

它发生在不同的实体,并可能发生在获取或更新操作上。

我的问题:这是Hibernate的问题,也需要更新到更新的版本? 当通过Java/Hibernate访问MSSQL 2016时,我无法找到有关兼容性问题的任何信息。

谢谢!

+0

http://stackoverflow.com/questions/3158491/staleobjectstateexception-row-was-updated-or-deleted-by或http://stackoverflow.com/questions/8645694/row-was-updated-or - 由另一个事务或未保存的值映射删除可能是相关的 –

+0

[This](http://stackoverflow.com/questions/16732156/how-to-solve-org-hibernate-staleobjectstateexception-当从一个复制数据)也似乎相关。 –

+0

感谢您的回复。我在看到这些帖子之前就已经看到了这些帖子,不幸的是他们没有提供解决我的问题的方法。 – oferbar

回答

1

如果可能,你可以尝试使用JVM 1.7和sqljdbc41.jar吗?如果你能够使用JVM 1.8和sqljdbc42.jar,那更好。

微软最近开放源码GitHub上驱动他们的驱动程序。你可以在他们的github项目上提出问题。

按我的SQL Server 2016的理解,你需要或者sqljdbc41.jar或sqljdbc42.jar

而且你可以发现更多的官方文档上MSDN

微软JDBC驱动程序6.0和4.2的SQL Server: 为了支持向后兼容以及可能的升级方案中,JDBC驱动6.0和4.2包括在每个安装包四个JAR类库:sqljdbc.jar,sqljdbc4。 jar,sqljdbc41.jar和sqljdbc42.jar。注意:sqljdbc.jar和sqljdbc4.jar仅用于向后兼容性,并且不包含驱动程序版本6.0,4.2和4.1中包含的新功能。

+0

我相信你是对的。我们最近为应用程序添加了JVM 1.8支持,因此下一步就是试用它。谢谢! – oferbar