Я пытаюсь построить запросы динамически, и моя следующая цель - добавить предложения JOIN (я не знаю, как я могу использовать API).
В настоящее время, например, этот код работает для меня:
...
Class baseClass;
...
CriteriaBuilder cb = JpaHandle.get().getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery(this.baseClass);
Root entity_ = cq.from(this.baseClass);
Predicate restrictions = null;
...
restrictions = cb.conjunction();
restrictions = cb.and(restrictions, entity_.get("id").in(this.listId));
...
cq.where(restrictions);
...
Query qry = JpaHandle.get().createQuery(cq);
(Примечание: JpaHandle - из реализации калитки-JPA)
Мое желание - добавить предложение JOIN (как можно больше)!
У меня есть специальные аннотации в классах (this.baseClass)
Например:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "assay_id", nullable = false)
Итак, Есть ли способ сделать что-то подобное в стандартной JPA? (Примечание: это не компилируется)
Здесь практическая ошибка aproaches:
...
Join<Experiment,Assay> experimentAssays = entity_.join( entity_.get("assay_id") );
Или так:
...
CriteriaQuery<Customer> q = cb.createQuery(Customer.class);
Root<Customer> c = q.from(Customer.class);
SetJoin<Customer, PurchaseOrder> o = c.join(Customer_.orders);
Для меня, если бы это было возможно более общее, это будет здорово...:
...
Join joinClause = entity_join(entity_.get("assay_id"), entity2_.get("id"));
Конечно, у меня есть специальные аннотации в классах (this.baseClass)
Спасибо за ваше время. Я буду благодарен за все комментарии!