Search code examples
sql-serverjavers

javers database version compatibility


I am using

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)  Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

From https://learn.microsoft.com/en-us/sql/connect/jdbc/microsoft-jdbc-driver-for-sql-server-support-matrix?view=sql-server-2017, I've chosen the following version of JDBC driver:

com.microsoft.sqlserver:mssql-jdbc:6.2.2.jre8

Environment:

org.springframework.data:spring-data-jpa:2.0.9.RELEASE
org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final
org.hibernate:hibernate-entitymanager:5.2.17.Final
Java version: 1.8.0_91, vendor: Oracle Corporation
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
org.javers:javers-spring-jpa:3.11.6

But I am getting SQLServerException: Incorrect syntax near 'OFFSET' when I try to update an Entity using

@JaversSpringDataAuditable
@Repository
public interface Users1Repository extends JpaRepository<Users1,Long>

org.polyjdbc.core.exception.QueryExecutionException: [SELECT_ERROR] Failed to run select query:
SELECT state, type, version, changed_properties, managed_type, commit_pk, author, commit_date, commit_id, g.local_id, g.fragment, g.owner_id_fk, o.local_id owner_local_id, o.fragment owner_fragment, o.type_name owner_type_name FROM jv_snapshot INNER JOIN jv_commit ON commit_pk = commit_fk INNER JOIN jv_global_id g ON g.global_id_pk = global_id_fk LEFT OUTER JOIN jv_global_id o ON o.global_id_pk = g.owner_id_fk WHERE snapshot_pk = 2200   
 ORDER BY snapshot_pk desc OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY
at org.polyjdbc.core.query.TransactionalQueryRunner.queryCollection(TransactionalQueryRunner.java:93)

During debug, I found that the following code is inserting OFFSET clause which has been introduced in SQL Server 2012

org.polyjdbc.core.dialect.MsSqlDialectQueries.limit(Query, Limit, boolean)

My questions:

Does Javers support SQL Server 2008 at all?

Where shall get a compatibility matrix between javers and Database versions?


Solution

  • JaVers dosen't have distinction between SQL Server versions and it generates SQL for the latest version. So SQL Server 2008 isn't and won't be supported.