mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#1064 - Query table alias not used in update() or delete() queries
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user