Мне нужно выбрать целочисленный столбец (int), присоединяясь к его сущности слева.
Когда строк нет, его значение равно "null", мне нужно иметь 0 вместо нуля.
Я искал аннотацию или способ переопределить запрос выбора без результата.Обратите внимание, что я использую 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, если это возможно.