yes*_*sil 6 jpa left-join criteria-api
我有一个像下面这样的连接引用,第一个连接表达式由JPA API自动构造.
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Tuple> c = cb.createTupleQuery();
Root<Demand> demands = c.from(Demand.class);
Join<Demand, Metadata> joinMetadata = demands.join("metadatas", JoinType.LEFT);
Run Code Online (Sandbox Code Playgroud)
但是,我想为我的joinMetadata添加一个aditional条件,如Metadata.type ="AFFECTATION_KEY",但我不知道如何.
非常感谢任何帮助
Jam*_*mes 11
JPA始终仅通过映射连接列连接.JPA 2.0不支持ON子句,但2.1草案确实有这种支持.
EclipseLink 2.4支持ON子句,
请参阅 http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying/JPQL#ON
也可以通过Criteria API,使用提供子句支持的EclipseLink 本机 Expression API on,
而Hibernate的Criteria API版本3.6也支持它:
Criteria c = session.createCriteria(Tuple.class);
c.createAlias("demands", "d")
.createAlias("d.metadata", "m",
Criteria.LEFT_JOIN, Restrictions.eq("m.type", "AFFECTATION_KEY"));
Run Code Online (Sandbox Code Playgroud)
或者你可能想要最后一位的Restrictions.eqProperty().请注意使用第四个参数的不受欢迎的createAlias()版本.以下是文档中的引用
参数:
| 归档时间: |
|
| 查看次数: |
16264 次 |
| 最近记录: |