2013-06-04 57 views
2

我是新來Querydsl所以這個問題似乎愚蠢到一些你:)Querydsl:JPAUpdateClause有多個來源

這是我想做的事:

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有多個來源?

回答

0

JPA只支持DML更新的單一來源,在您的情況下子查詢可能工作。

1

你可以在你的update語句中使用子查詢,如下所示。

upd.set(qApptRqst.xx, new JPASubQuery().from(qLocZip).where(qLocZip.usZip5Cd.eq(qApptRqst.applZip5Cd)).unique(qLocZip.locCd)) 
      .where((qApptRqst.apptRqstStatusRef.eq("NA"))) 
      .execute();