【问题标题】:Hibernate multiple columns IN clause Miscrosft SQL休眠多列 IN 子句 Microsoft SQL
【发布时间】:2019-02-15 15:08:25
【问题描述】:

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

Select field1, field2, ... from ... where (field1, field2) IN (select f1, f2 from ....)

当我的数据库是 PostgreSQL 时,它可以正常工作。现在我即将迁移到 Ms SQL Server。我的仓库是这样的

 @Override
public List<VesselVisit> getAllVisits() {
    return this.visitsRepository.findAll();
}

数据模型有一个父实体,该实体使用复合键与子实体建立 OneToMany 关系。

不能用 SQL Server 来实现吗?

【问题讨论】:

  • 您是否打算在迁移后使用实体框架?
  • 不,我不是,我有义务让用户休眠...
  • 你能分享一下休眠代码吗?
  • Hibernate 查询是自动生成的,我没有在上面放任何东西,它只是一个实现 CrudRespository 的存储库类
  • 我也遇到了同样的问题,你找到解决办法了吗?

标签: java sql-server hibernate spring-data-jpa jpql


【解决方案1】:

您可以在 SQL Server 中使用 Inner Join 而不是 In 运算符来实现它。

【讨论】:

  • 我不想手动编写查询,我希望 Hibernate 来做,实际上,查询是自动生成的,它在 PostgreSQL 上运行,但没有 os Ms SQL...
  • 在 SQL server 中一个运算符中不允许有多个列。
  • 我知道,但是这个查询是自动生成的,没有任何配置可以让hibernate将这个查询在sql中转换成一个连接例如?我不想手动编写查询...
猜你喜欢
  • 1970-01-01
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 2013-11-15
  • 1970-01-01
  • 2015-06-14
  • 2010-12-08
相关资源
最近更新 更多