相关疑难解决方法(0)

JPA Criteria API - 如何添加JOIN子句(作为一般句子)

我正在尝试动态构造查询,我的下一个目标是添加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);
Run Code Online (Sandbox Code Playgroud)

(注意:JpaHandle来自wicket-JPA实现)

我的愿望是添加JOIN子句(尽可能通用)!

我在类中有特定的注释(this.baseClass)

例如 :

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "assay_id", nullable = false)
Run Code Online (Sandbox Code Playgroud)

那么,在标准JPA中有没有这样的方法呢?(注意:这不编译)

这是一个实际的失败方法:

...
Join<Experiment,Assay> experimentAssays = entity_.join( entity_.get("assay_id") );
Run Code Online (Sandbox Code Playgroud)

或者像那样:

...
CriteriaQuery<Customer> q = cb.createQuery(Customer.class);
Root<Customer> c = q.from(Customer.class);
SetJoin<Customer, PurchaseOrder> o = c.join(Customer_.orders);
Run Code Online (Sandbox Code Playgroud)

对我来说,如果它可能更加通用,它会很棒......:

...
Join joinClause = …
Run Code Online (Sandbox Code Playgroud)

java api join criteria-api jpa-2.0

31
推荐指数
4
解决办法
15万
查看次数

是否Hibernate Criteria API已弃用,如果是,我们应该使用哪种API?

正如标题所说.它被弃用了吗?它在开发手册中说它是,我们应该使用JPA Criteria,但在用户手册中没有提到这一点.

hibernate hibernate-criteria

4
推荐指数
1
解决办法
5918
查看次数

标签 统计

api ×1

criteria-api ×1

hibernate ×1

hibernate-criteria ×1

java ×1

join ×1

jpa-2.0 ×1