2

私はQuerydslを初めて使用するので、質問がばかげているように見えるかもしれません:)

これが私がやりたいことです:

QAppt qApptRqst = QAppt.apptRqst;
QLocZip qLocZip = QLocZip.locZip;

JPAQuery query = new JPAQuery(em);

JPAUpdateClause upd = new JPAUpdateClause(em, qApptRqst);
upd.where(qApptRqst.apptRqstStatusRef.apptRqstStatusCd.eq("U"),
qApptRqst.applZip5Cd.eq(qLocZip.usZip5Cd))
   .set(qApptRqst.uscisLocation.uscisLocCd, qLocZip.uscisLocCd)
   .execute();

次の例外があります。

"java.lang.IllegalArgumentException: Undeclared path 'locZipJuris'. Add this path as a source to the query to be able to reference it."

複数のソースでJPAUpdateClauseを使用するにはどうすればよいですか?

4

2 に答える 2

1

以下に示すように、更新ステートメントでサブクエリを使用できます。

upd.set(qApptRqst.xx, new JPASubQuery().from(qLocZip).where(qLocZip.usZip5Cd.eq(qApptRqst.applZip5Cd)).unique(qLocZip.locCd))
             .where((qApptRqst.apptRqstStatusRef.eq("NA")))
             .execute();
于 2013-10-24T21:19:40.467 に答える
0

JPA は、DML 更新の単一のソースのみをサポートします。この場合、サブクエリが機能する可能性があります。

于 2013-06-08T20:06:46.367 に答える