我遇到了一个 Java 应用程序 (JVM 1.6) 的问题,该应用程序使用 Hibernate 3.6 通过 Microsoft JDBC Driver for SQL Server 访问 Microsoft SQL Server。
在使用 SQL JDBC 驱动程序 3.0 和 MSSQL 2008 - 2014 时一切正常。
但是当我尝试使用 MSSQL 2016 时,最新的“Microsoft 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 时,我找不到任何有关兼容性问题的信息。
谢谢!
最佳答案
如果可能,您可以尝试使用 JVM 1.7 和 sqljdbc41.jar 吗?如果您能够使用 JVM 1.8 和 sqljdbc42.jar,那就更好了。
Microsoft 最近在 GitHub 上开源了他们的驱动程序.您可以在他们的 github 项目上提出问题。
根据我对 SQL Server 2016 的理解,您需要 sqljdbc41.jar 或 sqljdbc42.jar
此外,您可以在 MSDN 上找到更多官方文档.
Microsoft JDBC Driver 6.0 and 4.2 for SQL Server: To support backward compatibility and possible upgrade scenarios, the JDBC Drivers 6.0 and 4.2 include four JAR class libraries in each installation package: sqljdbc.jar, sqljdbc4.jar, sqljdbc41.jar, and sqljdbc42.jar. Note: sqljdbc.jar, sqljdbc4.jar are provided only for backwards compatibility, and do not contain new features included with driver versions 6.0, 4.2, and 4.1.
关于java - Hibernate 和 MSSQL 2016 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39702378/