我正面临着Java应用程序(JVM 1.6)的问题,该应用程序正在使用Hibernate 3.6通过用于SQL Server的Microsoft JDBC驱动程序访问Microsoft SQL Server。
使用SQL JDBC驱动程序3.0和MSSQL 2008 - 2014时,一切正常。
但是当我尝试使用MSSQL 2016时,最新的“Microsoft JDBC Driver 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 :(得分:1)
如果可能,您可以尝试使用JVM 1.7和sqljdbc41.jar吗?如果能够使用JVM 1.8和sqljdbc42.jar,那就更好了。
微软最近在GitHub开源他们的驱动程序。你可以在他们的github项目上提出问题。
根据我对SQL Server 2016的理解,您需要sqljdbc41.jar或sqljdbc42.jar
此外,您可以在MSDN找到更多官方文档。
适用于SQL Server的Microsoft JDBC驱动程序6.0和4.2: 为了支持向后兼容性和可能的升级方案,JDBC驱动程序6.0和4.2在每个安装包中包含四个JAR类库:sqljdbc.jar,sqljdbc4.jar,sqljdbc41.jar和sqljdbc42.jar。注意:sqljdbc.jar,sqljdbc4.jar仅用于向后兼容,并且不包含驱动程序版本6.0,4.2和4.1中包含的新功能。