Sql server MS SQL DB不支持Hibernate mssql jdbc驱动程序生成的查询(多列where子句)

Sql server MS SQL DB不支持Hibernate mssql jdbc驱动程序生成的查询(多列where子句),sql-server,hibernate,jdbc,mssql-jdbc,Sql Server,Hibernate,Jdbc,Mssql Jdbc,当我尝试使用JPA存储库从表中获取所有行时,Hibernate生成的查询如下所示: Select field1, field2, ... from ... where (field1, field2) IN (select f1, f2 from ....) 当我的数据库是MySQL时,它工作正常。现在我正在尝试迁移到Ms SQL Server 我的存储库如下所示: @Override public List<Books> getAllBooks() { return th

当我尝试使用JPA存储库从表中获取所有行时,Hibernate生成的查询如下所示:

Select field1, field2, ... from ... where (field1, field2) IN (select f1, f2 from ....)
当我的数据库是MySQL时,它工作正常。现在我正在尝试迁移到Ms SQL Server

我的存储库如下所示:

@Override
public List<Books> getAllBooks() {
    return this.booksRepository.findAll();
}
@覆盖
公共列表getAllBooks(){
返回此.booksRepository.findAll();
}
数据模型有一个父实体,它与使用复合键的子实体有一个关系

我得到的错误是: 由以下原因引起:com.microsoft.sqlserver.jdbc.SQLServerException:在预期条件的上下文中指定的非布尔类型的表达式,靠近“,”

这是由于“其中(字段1,字段2)”。查询是由驱动程序本身生成的,因此我无法对此执行任何操作


任何线索都很感激。谢谢。

您记得将Hibernate方言从MySQL更改为SQL Server吗?记得。还有一些其他查询运行良好。他们中很少有人不这样做,并且给出了上面提到的错误。您是否记得将Hibernate方言从MySQL更改为SQL Server?是的,我更改了。还有一些其他查询运行良好。很少有人不这样做,并且给出了上面提到的错误。