#1064 - Query table alias not used in update() or delete() queries

This commit is contained in:
rob bygrave
2017-08-31 21:29:08 +12:00
parent 977dd52890
commit 96e3f4138f
2 changed files with 24 additions and 1 deletions
@@ -142,7 +142,13 @@ class CQueryBuilder {
private <T> String buildUpdateSql(OrmQueryRequest<T> request, String rootTableAlias, CQueryPredicates predicates, SqlTree sqlTree) {
String updateClause = "update " + request.getBeanDescriptor().getBaseTable() + " set " + predicates.getDbUpdateClause();
StringBuilder sb = new StringBuilder(200);
sb.append("update ").append(request.getBeanDescriptor().getBaseTable());
if (rootTableAlias != null) {
sb.append(" ").append(rootTableAlias);
}
sb.append(" set ").append(predicates.getDbUpdateClause());
String updateClause = sb.toString();
if (!sqlTree.isIncludeJoins()) {
// simple - update table set ... where ...
@@ -29,6 +29,23 @@ public class UpdateQueryTest extends BaseTestCase {
assertThat(query.getGeneratedSql()).contains("update o_customer set status=?, updtime=? where status = ? and id > ?");
}
@Test
public void withTableAlias() {
EbeanServer server = server();
UpdateQuery<Customer> update = server.update(Customer.class);
Query<Customer> query = update
.set("status", Customer.Status.ACTIVE)
.set("updtime", new Timestamp(System.currentTimeMillis()))
.where()
.gt("id", 1000)
.query();
query.alias("cust");
query.update();
assertThat(query.getGeneratedSql()).contains("update o_customer cust set status=?, updtime=? where id > ?");
}
@Test
public void withJoin() {