Генерация правильного и/или состояния с помощью JPA Criteria APIJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Генерация правильного и/или состояния с помощью JPA Criteria API

Сообщение Anonymous »

Я пытаюсь сгенерировать запрос с несколькими скобками в условиях «или» и «и», но внутренние скобки не генерируются.
Квадратные скобки для внешних предикатов генерируются правильно, но не для внутренних.
Код:

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

    CriteriaBuilder criteriaBuilder = this.getEntityManager().getCriteriaBuilder();
CriteriaQuery query = criteriaBuilder.createQuery(ConfigurationKey.class);
Root configurationKeyRoot = query.from(ConfigurationKey.class);
Join configurationKeyCustomerJoin = configurationKeyRoot.join(ConfigurationKey_.customer);

final List
 predicates = new ArrayList();
predicates.add(criteriaBuilder.equal(configurationKeyCustomerJoin.get(Customer_.externalId), customerId));
predicates.add(criteriaBuilder.equal(configurationKeyRoot.get(ConfigurationKey_.configType), configType));

final List orPredicates = new ArrayList();
keys.forEach((x, y) -> {
orPredicates.add(
criteriaBuilder.and(
criteriaBuilder.equal(configurationKeyRoot.get(ConfigurationKey_.keyType), x),
criteriaBuilder.equal(configurationKeyRoot.get(ConfigurationKey_.keyValue), y)
)
);
}

);

predicates.add(criteriaBuilder.or(orPredicates.toArray(new Predicate[orPredicates.size()])));
query.where(criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()])));
query.select(configurationKeyRoot);
TypedQuery typedQuery = this.getEntityManager().createQuery(query);
Сгенерированный запрос:

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

select
configurat0_.id as id1_1_,
configurat0_.createdAt as createdA2_1_,
configurat0_.updatedAt as updatedA3_1_,
configurat0_.configType as configTy4_1_,
configurat0_.customerId as customer7_1_,
configurat0_.keyType as keyType5_1_,
configurat0_.keyValue as keyValue6_1_
from
configuration_keys configurat0_
inner join
customers customer1_
on configurat0_.customerId=customer1_.id
where
customer1_.externalId=?
and configurat0_.configType=?
and (
configurat0_.keyType=?
and configurat0_.keyValue=?
or configurat0_.keyType=?
and configurat0_.keyValue=?
)
Ожидаемый запрос:

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

select
configurat0_.id as id1_1_,
configurat0_.createdAt as createdA2_1_,
configurat0_.updatedAt as updatedA3_1_,
configurat0_.configType as configTy4_1_,
configurat0_.customerId as customer7_1_,
configurat0_.keyType as keyType5_1_,
configurat0_.keyValue as keyValue6_1_
from
configuration_keys configurat0_
inner join
customers customer1_
on configurat0_.customerId=customer1_.id
where
customer1_.externalId=?
and configurat0_.configType=?
and (
(configurat0_.keyType=?
and configurat0_.keyValue=?)
or
(configurat0_.keyType=?
and configurat0_.keyValue=?)
)
Укажите на ошибку.

Подробнее здесь: https://stackoverflow.com/questions/408 ... iteria-api
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как написать соединение по латеральному "," в Java Criteria API JPA, Hibernate
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как написать соединение по латеральному "," в Java Criteria API JPA, Hibernate
    Anonymous » » в форуме JAVA
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как объединить две таблицы с помощью JPA Criteria Builder?
    Anonymous » » в форуме JAVA
    0 Ответы
    54 Просмотры
    Последнее сообщение Anonymous
  • Выберите родительский элемент и только некоторые поля из дочернего в отношениях @OneToMany с помощью JPA и Criteria Buil
    Anonymous » » в форуме JAVA
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Как объединить две таблицы с помощью JPA Criteria Builder?
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

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