2016-09-26 84 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