Ссылка на соединение в критериях запросаJAVA

Программисты JAVA общаются здесь
Anonymous
 Ссылка на соединение в критериях запроса

Сообщение Anonymous »

Используя реляционные данные Spring (Spring Data JDBC V3.3.6), у меня есть настройка сущности, аналогичная следующему: < /p>

Код: Выделить всё

@Table("entity_a")
public record EntityA(
@Id
Long id,
@Column("entity_a_id")
EntityB other) {
}

@Table("entity_b")
public record EntityB(
Long entityAId,
String value) {
}
Создание и обновление работает как очарование, но я столкнулся с некоторыми ограничениями, пытающимися запросить, используя jdbcaggregateTemplate . Я хотел бы получить все объекты, где itityb имеет определенное значение .
Использование API критериев, как это не работает:

Код: Выделить всё

jdbcAggregateTemplate.findAll(query, EntityA.class);
Нет изменений определенных критериев приводит к ожидаемому генерации запросов SQL. Генератор всегда заменяет имя таблицы (или псевдоним) соединенной сущности родительской сущностью.
Полученное исключение показывает, что сгенерированный запрос всегда выглядит следующим образом:
SELECT ...
FROM "entity_a"
LEFT OUTER JOIN "entity_b" "other" ON "other"."entity_a_id" = "entity_a"."id"
WHERE ("entity_a"."value" = ?)
< /code>
Я попробовал следующие вариации < /p>
query = query(Criteria.where("other_value").is("something"));
< /code>
и < /p>
query = query(Criteria.where("other.value").is("something"));
< /code>
оба вызвали один и тот же результат. -SQL PrettyPrint-Override ">SELECT ...
FROM "entity_a"
LEFT OUTER JOIN "entity_b" "other" ON "other"."entity_a_id" = "entity_a"."id"
WHERE ("other"."value" = ?)
< /code>
Я делаю что -то не так или просто в настоящее время невозможно использовать API критериев? Переход на Spring Data JPA в настоящее время не вариант для меня.


Подробнее здесь: https://stackoverflow.com/questions/794 ... y-criteria

Вернуться в «JAVA»