mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
Fix for #158 - Add support for using setDistinct (by excluding id property from generated sql)
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user