在JPA中覆盖列选择

时间:2019-05-08 10:55:12

标签: jpa java-ee eclipselink

我需要通过左键连接其实体来选择一个整数列(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查询。

0 个答案:

没有答案