Переопределить выбор столбца в jpa - PullRequest
0 голосов
/ 08 мая 2019

Мне нужно выбрать целочисленный столбец (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, если это возможно.

...