mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#1346 - Since ebean version 11.12.1 executing docStore query with findPagedList fails with error (due to order by id)
This commit is contained in:
@@ -3,23 +3,27 @@ package io.ebeaninternal.server.deploy;
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.bean.BeanCollection;
|
||||
import io.ebean.bean.EntityBean;
|
||||
import io.ebean.common.BeanList;
|
||||
import org.junit.Test;
|
||||
import org.tests.model.basic.Contact;
|
||||
import org.tests.model.basic.Customer;
|
||||
import org.tests.model.basic.ResetBasicData;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
|
||||
public class BeanPropertyAssocManyTest extends BaseTestCase {
|
||||
|
||||
BeanDescriptor<Customer> customerDesc = spiEbeanServer().getBeanDescriptor(Customer.class);
|
||||
private BeanDescriptor<Customer> customerDesc = spiEbeanServer().getBeanDescriptor(Customer.class);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
BeanPropertyAssocMany<Customer> contacts() {
|
||||
private BeanPropertyAssocMany<Customer> contacts() {
|
||||
return (BeanPropertyAssocMany<Customer>) customerDesc.getBeanProperty("contacts");
|
||||
}
|
||||
|
||||
@@ -44,6 +48,20 @@ public class BeanPropertyAssocManyTest extends BaseTestCase {
|
||||
assertTrue(ref.isReference());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void lazyLoadMany_addsToParentCollection() {
|
||||
|
||||
Customer customer = new Customer();
|
||||
customer.setContacts(new BeanList<>());
|
||||
|
||||
Contact contact = new Contact();
|
||||
contact.setCustomer(customer);
|
||||
|
||||
contacts().lazyLoadMany((EntityBean) contact);
|
||||
|
||||
assertThat(customer.getContacts()).hasSize(1);
|
||||
assertThat(customer.getContacts().get(0)).isSameAs(contact);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void findIdsByParentId() {
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
package io.ebeaninternal.server.querydefn;
|
||||
|
||||
|
||||
import io.ebean.OrderBy;
|
||||
import io.ebean.ExpressionList;
|
||||
import io.ebean.Query;
|
||||
import io.ebeaninternal.api.SpiExpression;
|
||||
import io.ebeaninternal.api.SpiExpressionList;
|
||||
import io.ebeaninternal.api.CQueryPlanKey;
|
||||
import io.ebeaninternal.api.SpiQuery;
|
||||
import io.ebeaninternal.server.deploy.TableJoin;
|
||||
import io.ebeaninternal.server.deploy.meta.DeployTableJoin;
|
||||
@@ -13,63 +12,55 @@ import io.ebeaninternal.server.expression.BaseExpressionTest;
|
||||
import org.junit.Test;
|
||||
import org.tests.model.basic.Customer;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class OrmQueryPlanKeyTest extends BaseExpressionTest {
|
||||
|
||||
|
||||
@Test
|
||||
public void equals_when_defaults() {
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
|
||||
assertSame(key1, key2);
|
||||
@SuppressWarnings("unchecked")
|
||||
private DefaultOrmQuery<Customer> query() {
|
||||
return (DefaultOrmQuery) server().find(Customer.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffDiscValue() {
|
||||
public void equals_when_defaults() {
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey("A", null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key3 = new OrmQueryPlanKey("B", null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
assertDifferent(key1, key2);
|
||||
assertDifferent(key2, key3);
|
||||
assertSame(query().createQueryPlanKey(), query().createQueryPlanKey());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffTableJoinNull() {
|
||||
|
||||
TableJoin tableJoin = tableJoin("table", "id", "customer_id");
|
||||
DefaultOrmQuery<Customer> q1 = query();
|
||||
q1.setM2MIncludeJoin(tableJoin("table", "id", "customer_id"));
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, tableJoin, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
|
||||
assertDifferent(key1, key2);
|
||||
assertDifferent(q1, query());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffTableJoin() {
|
||||
|
||||
TableJoin tableJoin1 = tableJoin("one", "id", "customer_id");
|
||||
TableJoin tableJoin2 = tableJoin("two", "id", "customer_id");
|
||||
DefaultOrmQuery<Customer> q1 = query();
|
||||
q1.setM2MIncludeJoin(tableJoin("one", "cid", "customer_id"));
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, tableJoin1, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, tableJoin2, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
DefaultOrmQuery<Customer> q2 = query();
|
||||
q2.setM2MIncludeJoin(tableJoin("two", "cid", "customer_id"));
|
||||
|
||||
assertDifferent(key1, key2);
|
||||
assertDifferent(q1, q2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_sameTableJoin() {
|
||||
|
||||
TableJoin tableJoin1 = tableJoin("one", "id", "customer_id");
|
||||
TableJoin tableJoin2 = tableJoin("one", "id", "customer_id");
|
||||
DefaultOrmQuery<Customer> q1 = query();
|
||||
q1.setM2MIncludeJoin(tableJoin("one", "id", "cust_id"));
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, tableJoin1, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, tableJoin2, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
DefaultOrmQuery<Customer> q2 = query();
|
||||
q2.setM2MIncludeJoin(tableJoin("one", "id", "cust_id"));
|
||||
|
||||
assertSame(key1, key2);
|
||||
assertSame(q1, q2);
|
||||
}
|
||||
|
||||
private TableJoin tableJoin(String table, String col1, String col2) {
|
||||
@@ -82,297 +73,293 @@ public class OrmQueryPlanKeyTest extends BaseExpressionTest {
|
||||
@Test
|
||||
public void equals_when_diffQueryType() {
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.LIST, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
DefaultOrmQuery<Customer> q1 = query();
|
||||
q1.setType(SpiQuery.Type.BEAN);
|
||||
|
||||
assertDifferent(key1, key2);
|
||||
DefaultOrmQuery<Customer> q2 = query();
|
||||
q2.setType(SpiQuery.Type.LIST);
|
||||
|
||||
assertDifferent(q1, q2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_firstRowsDifferent() {
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 10, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
CQueryPlanKey key1 = query().setFirstRow(10).createQueryPlanKey();
|
||||
CQueryPlanKey key2 = query().createQueryPlanKey();
|
||||
assertDifferent(key1, key2);
|
||||
|
||||
key1 = query().setFirstRow(10).createQueryPlanKey();
|
||||
key2 = query().setFirstRow(9).createQueryPlanKey();
|
||||
assertDifferent(key1, key2);
|
||||
|
||||
key1 = query().createQueryPlanKey();
|
||||
key2 = query().setFirstRow(9).createQueryPlanKey();
|
||||
assertDifferent(key1, key2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_maxRowsDifferent() {
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 10, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
|
||||
CQueryPlanKey key1 = query().setMaxRows(10).createQueryPlanKey();
|
||||
CQueryPlanKey key2 = query().createQueryPlanKey();
|
||||
assertDifferent(key1, key2);
|
||||
|
||||
key1 = query().setMaxRows(10).createQueryPlanKey();
|
||||
key2 = query().setMaxRows(9).createQueryPlanKey();
|
||||
assertDifferent(key1, key2);
|
||||
|
||||
key1 = query().createQueryPlanKey();
|
||||
key2 = query().setMaxRows(9).createQueryPlanKey();
|
||||
assertDifferent(key1, key2);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_firstRowsMaxRowsSame() {
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 10, 20, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 10, 20, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
|
||||
CQueryPlanKey key1 = query().setMaxRows(10).setFirstRow(20).createQueryPlanKey();
|
||||
CQueryPlanKey key2 = query().setFirstRow(20).setMaxRows(10).createQueryPlanKey();
|
||||
assertSame(key1, key2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffDisableLazyLoading() {
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, true, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
|
||||
assertDifferent(key1, key2);
|
||||
assertDifferent(query().setDisableLazyLoading(true), query());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffOrderByNull() {
|
||||
|
||||
OrderBy<Object> o1 = new OrderBy<>("id");
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, o1, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
CQueryPlanKey key1 = query().order("id").createQueryPlanKey();
|
||||
CQueryPlanKey key2 = query().createQueryPlanKey();
|
||||
assertDifferent(key1, key2);
|
||||
|
||||
key1 = ((DefaultOrmQuery) query().order().asc("id")).createQueryPlanKey();
|
||||
key2 = query().createQueryPlanKey();
|
||||
assertDifferent(key1, key2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_orderBySame() {
|
||||
|
||||
OrderBy<Object> o1 = new OrderBy<>("id, name");
|
||||
OrderBy<Object> o2 = new OrderBy<>("id, name");
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, o1, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, o2, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
|
||||
CQueryPlanKey key1 = query().order("id, name").createQueryPlanKey();
|
||||
CQueryPlanKey key2 = query().order("id, name").createQueryPlanKey();
|
||||
assertSame(key1, key2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffDistinct() {
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, true, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
|
||||
CQueryPlanKey key1 = query().setDistinct(true).createQueryPlanKey();
|
||||
CQueryPlanKey key2 = query().createQueryPlanKey();
|
||||
assertDifferent(key1, key2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_sameDistinct() {
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, true, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, true, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
|
||||
CQueryPlanKey key1 = query().setDistinct(true).createQueryPlanKey();
|
||||
CQueryPlanKey key2 = query().setDistinct(true).createQueryPlanKey();
|
||||
assertSame(key1, key2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffSqlDistinct() {
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, true, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
DefaultOrmQuery<Customer> q1 = query();
|
||||
q1.setSqlDistinct(true);
|
||||
CQueryPlanKey key1 = q1.createQueryPlanKey();
|
||||
CQueryPlanKey key2 = query().createQueryPlanKey();
|
||||
|
||||
assertDifferent(key1, key2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_sameSqlDistinct() {
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, true, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, true, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
assertSame(key1, key2);
|
||||
|
||||
DefaultOrmQuery<Customer> q1 = query();
|
||||
q1.setSqlDistinct(true);
|
||||
|
||||
DefaultOrmQuery<Customer> q2 = query();
|
||||
q2.setSqlDistinct(true);
|
||||
|
||||
assertSame(q1, q2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffMapKeyNull() {
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, "mapKey", null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
public void equals_when_useDocStore() {
|
||||
CQueryPlanKey key1 = query().setUseDocStore(true).createQueryPlanKey();
|
||||
CQueryPlanKey key2 = query().createQueryPlanKey();
|
||||
|
||||
assertDifferent(key1, key2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffMapKey() {
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, "mapKey", null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, "diff", null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
assertDifferent(key1, key2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_sameMapKey() {
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, "mapKey", null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, "mapKey", null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
assertSame(key1, key2);
|
||||
CQueryPlanKey key1 = query().setMapKey("name").createQueryPlanKey();
|
||||
CQueryPlanKey key2 = query().createQueryPlanKey();
|
||||
assertDifferent(key1, key2);
|
||||
|
||||
CQueryPlanKey key3 = query().setMapKey("email").createQueryPlanKey();
|
||||
assertDifferent(key1, key3);
|
||||
|
||||
CQueryPlanKey key4 = query().setMapKey("name").createQueryPlanKey();
|
||||
assertSame(key1, key4);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffIdNull() {
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, 42, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
|
||||
CQueryPlanKey key1 = query().setId(42).createQueryPlanKey();
|
||||
CQueryPlanKey key2 = query().createQueryPlanKey();
|
||||
assertDifferent(key1, key2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_idBothGiven() {
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, 42, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, 23, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
|
||||
CQueryPlanKey key1 = query().setId(42).createQueryPlanKey();
|
||||
CQueryPlanKey key2 = query().setId(23).createQueryPlanKey();
|
||||
assertSame(key1, key2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffTemporalMode() {
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.DRAFT, null, null, null, null, null);
|
||||
|
||||
CQueryPlanKey key1 = query().createQueryPlanKey();
|
||||
CQueryPlanKey key2 = query().asDraft().createQueryPlanKey();
|
||||
assertDifferent(key1, key2);
|
||||
|
||||
CQueryPlanKey key3 = query().asOf(new Timestamp(System.currentTimeMillis())).createQueryPlanKey();
|
||||
assertDifferent(key1, key3);
|
||||
|
||||
CQueryPlanKey key4 = query().setIncludeSoftDeletes().createQueryPlanKey();
|
||||
assertDifferent(key1, key4);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffForUpdate() {
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, Query.ForUpdate.BASE, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
assertDifferent(key1, key2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffForUpdate_NoWait() {
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, Query.ForUpdate.BASE, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, Query.ForUpdate.NOWAIT, null, null, null, null);
|
||||
CQueryPlanKey key1 = query().forUpdate().createQueryPlanKey();
|
||||
CQueryPlanKey key2 = query().createQueryPlanKey();
|
||||
assertDifferent(key1, key2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffForUpdate_SkipLocked() {
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, Query.ForUpdate.BASE, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, Query.ForUpdate.SKIPLOCKED, null, null, null, null);
|
||||
assertDifferent(key1, key2);
|
||||
CQueryPlanKey key3 = query().forUpdateNoWait().createQueryPlanKey();
|
||||
assertDifferent(key1, key3);
|
||||
|
||||
CQueryPlanKey key4 = query().forUpdateSkipLocked().createQueryPlanKey();
|
||||
assertDifferent(key1, key4);
|
||||
|
||||
CQueryPlanKey key5 = query().forUpdate().createQueryPlanKey();
|
||||
assertSame(key1, key5);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffRootAliasNull() {
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, "rootAlias", null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
|
||||
CQueryPlanKey key1 = query().alias("alias").createQueryPlanKey();
|
||||
CQueryPlanKey key2 = query().createQueryPlanKey();
|
||||
assertDifferent(key1, key2);
|
||||
|
||||
CQueryPlanKey key3 = query().alias("diff").createQueryPlanKey();
|
||||
assertDifferent(key1, key3);
|
||||
|
||||
CQueryPlanKey key4 = query().alias("alias").createQueryPlanKey();
|
||||
assertSame(key1, key4);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffRootAlias() {
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, "rootAlias", null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, "diff", null, null, null);
|
||||
assertDifferent(key1, key2);
|
||||
|
||||
private DefaultOrmQuery<Customer> list_id_eq_42() {
|
||||
return (DefaultOrmQuery<Customer>) server().find(Customer.class)
|
||||
.where().eq("id", 42).query();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_sameRootAlias() {
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, "rootAlias", null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, "rootAlias", null, null, null);
|
||||
assertSame(key1, key2);
|
||||
private DefaultOrmQuery<Customer> list_id_eq_43() {
|
||||
return (DefaultOrmQuery<Customer>) server().find(Customer.class)
|
||||
.where().eq("id", 43).query();
|
||||
}
|
||||
|
||||
SpiExpressionList<Customer> list_id_eq_42() {
|
||||
return (SpiExpressionList<Customer>) server().find(Customer.class)
|
||||
.where().eq("id", 42);
|
||||
}
|
||||
|
||||
SpiExpressionList<Customer> list_id_eq_43() {
|
||||
return (SpiExpressionList<Customer>) server().find(Customer.class)
|
||||
.where().eq("id", 43);
|
||||
}
|
||||
|
||||
SpiExpressionList<Customer> list_id_eq_42_and_name_eq_rob() {
|
||||
return (SpiExpressionList<Customer>) server().find(Customer.class)
|
||||
.where().eq("id", 43).eq("name", "rob");
|
||||
private DefaultOrmQuery<Customer> list_id_eq_42_and_name_eq_rob() {
|
||||
return (DefaultOrmQuery<Customer>) server().find(Customer.class)
|
||||
.where().eq("id", 43).eq("name", "rob").query();
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void equals_when_sameWhere() {
|
||||
|
||||
|
||||
SpiExpressionList<Customer> list1 = list_id_eq_42();
|
||||
SpiExpressionList<Customer> list2 = list_id_eq_43();
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, list1, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, list2, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
assertSame(key1, key2);
|
||||
assertSame(list_id_eq_42(), list_id_eq_43());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void equals_when_diffWhere() {
|
||||
|
||||
SpiExpressionList<Customer> where1 = list_id_eq_42();
|
||||
SpiExpressionList<Customer> where2 = list_id_eq_42_and_name_eq_rob();
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, where1, null, SpiQuery.TemporalMode.DRAFT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, where2, null, SpiQuery.TemporalMode.DRAFT, null, null, null, null, null);
|
||||
assertDifferent(key1, key2);
|
||||
assertDifferent(list_id_eq_42(), list_id_eq_42_and_name_eq_rob());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffWhereNullLast() {
|
||||
|
||||
SpiExpressionList<Customer> list1 = list_id_eq_42();
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, list1, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
assertDifferent(key1, key2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffWhereNullFirst() {
|
||||
|
||||
SpiExpressionList<Customer> list1 = list_id_eq_42();
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, list1, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
assertDifferent(key1, key2);
|
||||
assertDifferent(list_id_eq_42(), query());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_diffHaving() {
|
||||
|
||||
SpiExpression having1 = list_id_eq_42().copyForPlanKey();
|
||||
SpiExpression having2 = list_id_eq_42_and_name_eq_rob().copyForPlanKey();
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, having1, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, having2, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
CQueryPlanKey key1 = planKey(query().having().eq("id", 42));
|
||||
CQueryPlanKey key2 = planKey(query().having().eq("id", 42).eq("name", "Rob"));
|
||||
assertDifferent(key1, key2);
|
||||
|
||||
CQueryPlanKey key3 = planKey(query().where().eq("id", 42));
|
||||
assertDifferent(key1, key3);
|
||||
|
||||
CQueryPlanKey key4 = planKey(query().having().eq("name", "Rob"));
|
||||
assertDifferent(key1, key4);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void equals_when_sameHaving() {
|
||||
|
||||
SpiExpression having1 = list_id_eq_42().copyForPlanKey();
|
||||
SpiExpression having2 = list_id_eq_42().copyForPlanKey();
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, having1, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, having2, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
CQueryPlanKey key1 = planKey(query().having().eq("id", 42));
|
||||
CQueryPlanKey key2 = planKey(query().having().eq("id", 43));
|
||||
assertSame(key1, key2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_havingNullLast() {
|
||||
|
||||
SpiExpression having1 = list_id_eq_42().copyForPlanKey();
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, having1, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
assertDifferent(key1, key2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_havingNullFirst() {
|
||||
|
||||
SpiExpression having1 = list_id_eq_42().copyForPlanKey();
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, having1, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
assertDifferent(key1, key2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals_when_manualId() {
|
||||
|
||||
OrmQueryPlanKey key1 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, false, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
OrmQueryPlanKey key2 = new OrmQueryPlanKey(null, null, SpiQuery.Type.BEAN, null, 0, 0, false, true, null, false, false, null, null, null, null, null, SpiQuery.TemporalMode.CURRENT, null, null, null, null, null);
|
||||
assertDifferent(key1, key2);
|
||||
DefaultOrmQuery<Customer> q1 = query();
|
||||
q1.setManualId(true);
|
||||
|
||||
assertDifferent(q1, query());
|
||||
}
|
||||
|
||||
private void assertDifferent(OrmQueryPlanKey key1, OrmQueryPlanKey key2) {
|
||||
private CQueryPlanKey planKey(ExpressionList<Customer> id) {
|
||||
return planKey(id.query());
|
||||
}
|
||||
|
||||
private CQueryPlanKey planKey(Query<Customer> query) {
|
||||
return ((DefaultOrmQuery) query).createQueryPlanKey();
|
||||
}
|
||||
|
||||
private void assertDifferent(DefaultOrmQuery q1, DefaultOrmQuery q2) {
|
||||
assertDifferent(q1.createQueryPlanKey(), q2.createQueryPlanKey());
|
||||
}
|
||||
|
||||
private void assertSame(DefaultOrmQuery q1, DefaultOrmQuery q2) {
|
||||
assertSame(q1.createQueryPlanKey(), q2.createQueryPlanKey());
|
||||
}
|
||||
|
||||
private void assertDifferent(CQueryPlanKey key1, CQueryPlanKey key2) {
|
||||
assertThat(key1).isNotEqualTo(key2);
|
||||
assertThat(key1.hashCode()).isNotEqualTo(key2.hashCode());
|
||||
}
|
||||
|
||||
private void assertSame(OrmQueryPlanKey key1, OrmQueryPlanKey key2) {
|
||||
private void assertSame(CQueryPlanKey key1, CQueryPlanKey key2) {
|
||||
assertThat(key1).isEqualTo(key2);
|
||||
assertThat(key1.hashCode()).isEqualTo(key2.hashCode());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user