我需要通过左键连接其实体来选择一个整数列(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将具有空值。
要修复它,在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查询。