javax.persistence.criteria.CriteriaBuilderでクエリを作成する際に問題が発生しています。私は、EclipseLink 2.1とOracle 10gデータベースを使用しています。複数の制限付きのクエリを作成する場合は、最初の制限のみを使用し、両方を使用することはありません。Jpa QueryBuilder where節の複数の式が機能しない
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Assignment> query = cb.createQuery(Assignment.class);
Root<Assignment> assignment = query.from(Assignment.class);
query.where(
cb.equal(assignment.get("request"), request),
cb.isNull(assignment.get("endDate")));
return getEm().createQuery(query).getResultList();
productedクエリは次のとおりです:
SELECT ASSX_ID, END_DATE, BEGIN_DATE, COMMENTS,
ASSX_OER_ASSIGNED_TO_ID, OER_OER_ID_ASSIGNED_BY,
ASSX_RQST_ID
FROM TARTS.ASSIGNMENT_XREF
WHERE (ASSX_RQST_ID = ?)
それは、where句を除いてよさそうだ
は、ここに私のコードです。私は期待しています:
SELECT ASSX_ID, END_DATE, BEGIN_DATE, COMMENTS,
ASSX_OER_ASSIGNED_TO_ID, OER_OER_ID_ASSIGNED_BY,
ASSX_RQST_ID FROM TARTS.ASSIGNMENT_XREF
WHERE (ASSX_RQST_ID = ? AND BEGIN_DATE IS NOT NULL)
私はcb.and(arg1、arg2)を使用するかどうかは関係ありません。私は何か間違っているのですか?どんな助けもありがとう。
あなたcb.isNullはisNotNullする必要がありますいくつかの奇妙なことを行います。制限を追加しようとしましたか、明示的に接続を定義しようとしましたか? – jelle