jpa - 覆盖jpa中的列选择
问题描述
我需要通过左连接实体来选择一个整数列(int)。
当没有行时,它的值为“null”,我需要的是 0 而不是 null。
我搜索了一个注释或一种方法来覆盖没有结果的选择查询。请注意,我使用的是 eclipselink。
我正在寻找总是选择列“coalesce(columnName,0)”而不是 columnName 的东西。
编辑:
代码示例:
public class parent{
@Id
private int id;
private String field1;
private String field2;
private List<Child> children;
}
public class Child{
@Id
private int id;
private int myNumber;
private String field;
}
JPA 查询类似于
SELECT p FROM parent p LEFT JOIN p.children c ON c.field = 'aaa' WHERE p.field1 = 'bbb'
这个查询的翻译是:
SELECT t0.id, t0.field1, t0.field2, t1.id, t1.myNumber, t1.field
FROM parent t0 LEFT OUTER JOIN child t1 on t0.id = t1.parent_id AND t1.field = 'aaaa
WHERE t0.field1 = 'bbb'
在 CHILD 中没有行的情况下,字段:t1.myNumber 的值为 null。
要修复它,在 Sql 语句中,通常我会使用 coalesce(t1.myNumber,0)。所以查询将是:
SELECT t0.id, t0.field1, t0.field2, t1.id, coalesce(t1.myNumber,0), t1.field
FROM parent t0 LEFT OUTER JOIN child t1 on t0.id = t1.parent_id AND t1.field = 'aaaa
WHERE t0.field1 = 'bbb'
我需要的是使用一些注释或任何其他工具(如果存在)来完成这个结果,如果可能的话,不要更改 JPA 查询。
解决方案
推荐阅读
- python - .decode('utf-8').upper() 和特殊字符的问题(但仅在字符串内部)
- python - 使用 pytesseract 在 python 中进行图像处理是否总是提供正确的输出?
- java - 无法单击 goibibo 站点中的单选按钮,因为每个单选按钮可能具有相同的元素
- c - c - 如何正确释放哈希表上的元素
- ubuntu - 与服务器 10.117.xxx.xxx:6443 的连接被拒绝 - 您是否指定了正确的主机或端口?
- angular - Angular 7 主动路由链接失去了他的风格?
- vba - 错误 9:使用 open private 时下标超出范围
- vue.js - 如何将使用参数计算的参数传递给子组件的道具?
- c++ - Adding methods to class template specialization
- html - proc 报告中的 sas 图形符号未正确显示