Fix for #158 - Add support for using setDistinct (by excluding id property from generated sql)

This commit is contained in:
Rob Bygrave
2014-07-07 23:29:48 +12:00
parent af9a01be77
commit 5cc2eff0d4
8 changed files with 133 additions and 24 deletions
@@ -0,0 +1,72 @@
package com.avaje.tests.query.other;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import com.avaje.ebean.BaseTestCase;
import com.avaje.ebean.Ebean;
import com.avaje.ebean.Query;
import com.avaje.ebean.bean.EntityBean;
import com.avaje.ebean.bean.EntityBeanIntercept;
import com.avaje.tests.model.basic.Customer;
import com.avaje.tests.model.basic.ResetBasicData;
public class TestQueryDistinct extends BaseTestCase {
@Test
public void test() {
ResetBasicData.reset();
Query<Customer> query = Ebean.find(Customer.class)
.setUseCache(false)
.setDistinct(true)
.select("name");
List<Customer> customers = query.findList();
String generatedSql = query.getGeneratedSql();
Assert.assertTrue(generatedSql.contains("select distinct t0.name c0 from o_customer t0"));
for (Customer customer : customers) {
EntityBeanIntercept ebi = ((EntityBean)customer)._ebean_getIntercept();
Assert.assertTrue(ebi.isDisableLazyLoad());
Assert.assertNull(ebi.getPersistenceContext());
// lazy loading disabled
Assert.assertNull(customer.getId());
Assert.assertNull(customer.getAnniversary());
}
}
@Test
public void testDistinctStatus() {
ResetBasicData.reset();
Query<Customer> query = Ebean.find(Customer.class)
.setUseCache(false)
.setDistinct(true)
.select("status")
.where().isNotNull("status").query();
List<Customer> customers = query.findList();
String generatedSql = query.getGeneratedSql();
Assert.assertTrue(generatedSql.contains("select distinct t0.status c0 from o_customer t0"));
for (Customer customer : customers) {
Assert.assertNotNull(customer.getStatus());
// lazy loading disabled
Assert.assertNull(customer.getId());
Assert.assertNull(customer.getAnniversary());
}
}
}