[英]Left Outer Join in Criteria Api
I'm trying to get the following query using the Criteria API: 我正在尝试使用Criteria API获取以下查询:
select lang.* from LKUP_LANG lang LEFT OUTER JOIN LANG_SEQUENCES seq ON
lang.SHORT_NAME=seq.LANG_CODE and (lang.DISPLAY_NAME is not null)
order by nvl(seq.SEQ_LANG_CODE, 2147483647) asc;
I did: 我做了:
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<Lang> criteriaQuery = builder.createQuery(Lang.class);
Root<Lang> languageRoot = criteriaQuery.from(Lang.class);
List<Predicate> predicates = new ArrayList<>();
// added some predicates
criteriaQuery.orderBy(...);
Tried adding 尝试添加
Join<Lang, LANG_SEQUENCES> join = languageRoot.join("languageSequences",JoinType.LEFT);
The entity looks like 该实体看起来像
LanguageSequences
@Id
@Column(name = "LANG_CODE")
private String langCode;
@Column(name = "SEQ_LANG_CODE")
private int seqLangcode;
@OneToOne
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "LANG_CODE", referencedColumnName = "SHORT_NAME")
private Lang lang;
and 和
Lang
@Column(name = "DISPLAY_NAME", unique = true)
private String displayName;
@Id
@Column(name = "SHORT_NAME")
private String shortName;
@OneToOne(cascade = CascadeType.ALL, mappedBy = "lkupLanguage")
private LanguageSequences languageSequences;
Tried using joins in different ways but it looks like I'm missing something. 尝试以不同的方式使用联接,但是好像我丢失了一些东西。 I get the orderBy, the predicates all correct.
我得到了orderBy,所有谓词都正确。 I'm using JPA 2.1 and Oracle.
我正在使用JPA 2.1和Oracle。
在JPA中,您无法选择序列,应使用本机查询
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.