我是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 与多个来源一起使用?
答案 0 :(得分:1)
您可以在更新语句中使用子查询,如下所示。
upd.set(qApptRqst.xx, new JPASubQuery().from(qLocZip).where(qLocZip.usZip5Cd.eq(qApptRqst.applZip5Cd)).unique(qLocZip.locCd))
.where((qApptRqst.apptRqstStatusRef.eq("NA")))
.execute();
答案 1 :(得分:0)
JPA仅支持单个DML更新源,在您的情况下,子查询可能有效。