クエリを動的に構築しようとしていますが、次のターゲットは 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 は wicket-JPA 実装からのものです)
私の望みは JOIN 句を追加することです (できるだけ一般的に)!
クラス(this.baseClass)に特定の注釈があります
例えば :
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "assay_id", nullable = false)
それで、標準のJPAでこのような方法はありますか?(注:これはコンパイルされません)
ここで実用的な失敗が近づいています:
...
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) には特定の注釈があります。
お時間をいただきありがとうございます。私はあらゆる種類のコメントに感謝します!