【问题标题】:JPA Repository : inner join with null valueJPA 存储库:具有空值的内部联接
【发布时间】:2016-04-16 22:11:11
【问题描述】:

我正在使用 JPA 存储库来访问 Mysql。 我有这个问题:

@Query("Select s.productName, s.stock from Sell s");

我收到一个执行错误,因为库存有时为空。
该查询生成的sql翻译为:

select sell0_.productName, sell0_.stock_id from T_SELL sell0_ inner join T_STOCK stock0_ on sell0_.stock_id=stock0_.id  

即使 stock_id 为空,有没有办法让这个 JPA 查询工作?

【问题讨论】:

  • 你是如何定义卖出-股票关系的?
  • 卖出:@OneToOne 私人股票;

标签: java mysql jpa


【解决方案1】:

应该可以合并

@Query("Select s.productName, coalesce(s.stock,'xxx') from Sell s");

完整的人是https://docs.jboss.org/hibernate/orm/4.3/devguide/en-US/html/ch11.html

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    尝试改变关系定义,使用 optional = true:

    @OneToOne(optional = true)
    private Stock stock; 
    

    您甚至可以使用连接、子选择或其他选择来更改获取这些数据的方式。更多信息在这里:JPA eager fetch does not join

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-04
      • 2023-03-03
      • 2018-03-09
      • 2010-12-12
      • 2021-02-17
      • 2022-01-15
      • 2013-07-24
      • 2023-02-16
      相关资源
      最近更新 更多