/*
* Copyright 2004-2015 the Seasar Foundation and the Others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
package org.seasar.extension.jdbc.query;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.OneToOne;
import javax.persistence.Transient;
import junit.framework.TestCase;
import org.seasar.extension.jdbc.EntityMeta;
import org.seasar.extension.jdbc.IterationCallback;
import org.seasar.extension.jdbc.IterationContext;
import org.seasar.extension.jdbc.JoinMeta;
import org.seasar.extension.jdbc.JoinType;
import org.seasar.extension.jdbc.OrderByItem;
import org.seasar.extension.jdbc.PropertyMapper;
import org.seasar.extension.jdbc.PropertyMeta;
import org.seasar.extension.jdbc.ResultSetHandler;
import org.seasar.extension.jdbc.SqlLogRegistry;
import org.seasar.extension.jdbc.SqlLogRegistryLocator;
import org.seasar.extension.jdbc.ValueType;
import org.seasar.extension.jdbc.OrderByItem.OrderingSpec;
import org.seasar.extension.jdbc.dialect.Db2Dialect;
import org.seasar.extension.jdbc.dialect.HsqlDialect;
import org.seasar.extension.jdbc.dialect.MssqlDialect;
import org.seasar.extension.jdbc.dialect.OracleDialect;
import org.seasar.extension.jdbc.dialect.PostgreDialect;
import org.seasar.extension.jdbc.dialect.StandardDialect;
import org.seasar.extension.jdbc.dto.AaaDto;
import org.seasar.extension.jdbc.entity.Aaa;
import org.seasar.extension.jdbc.entity.Bbb;
import org.seasar.extension.jdbc.entity.Ccc;
import org.seasar.extension.jdbc.entity.Ddd;
import org.seasar.extension.jdbc.entity.Eee;
import org.seasar.extension.jdbc.entity.Emp;
import org.seasar.extension.jdbc.exception.BaseJoinNotFoundRuntimeException;
import org.seasar.extension.jdbc.exception.EntityColumnNotFoundRuntimeException;
import org.seasar.extension.jdbc.exception.IllegalIdPropertySizeRuntimeException;
import org.seasar.extension.jdbc.exception.JoinDuplicatedRuntimeException;
import org.seasar.extension.jdbc.exception.NonEntityRuntimeException;
import org.seasar.extension.jdbc.exception.PropertyNotFoundRuntimeException;
import org.seasar.extension.jdbc.exception.QueryTwiceExecutionRuntimeException;
import org.seasar.extension.jdbc.exception.VersionPropertyNotExistsRuntimeException;
import org.seasar.extension.jdbc.handler.BeanAutoResultSetHandler;
import org.seasar.extension.jdbc.handler.BeanIterationAutoResultSetHandler;
import org.seasar.extension.jdbc.handler.BeanListAutoResultSetHandler;
import org.seasar.extension.jdbc.manager.JdbcManagerImpl;
import org.seasar.extension.jdbc.manager.JdbcManagerImplementor;
import org.seasar.extension.jdbc.mapper.AbstractEntityMapper;
import org.seasar.extension.jdbc.mapper.AbstractRelationshipEntityMapper;
import org.seasar.extension.jdbc.mapper.ManyToOneEntityMapperImpl;
import org.seasar.extension.jdbc.mapper.OneToManyEntityMapperImpl;
import org.seasar.extension.jdbc.mapper.OneToOneEntityMapperImpl;
import org.seasar.extension.jdbc.mapper.PropertyMapperImpl;
import org.seasar.extension.jdbc.meta.ColumnMetaFactoryImpl;
import org.seasar.extension.jdbc.meta.EntityMetaFactoryImpl;
import org.seasar.extension.jdbc.meta.PropertyMetaFactoryImpl;
import org.seasar.extension.jdbc.meta.TableMetaFactoryImpl;
import org.seasar.extension.jdbc.parameter.Parameter;
import org.seasar.extension.jdbc.types.ValueTypes;
import org.seasar.extension.jdbc.where.SimpleWhere;
import org.seasar.extension.jta.TransactionManagerImpl;
import org.seasar.extension.jta.TransactionSynchronizationRegistryImpl;
import org.seasar.framework.convention.impl.PersistenceConventionImpl;
import org.seasar.framework.mock.sql.MockDataSource;
import org.seasar.framework.util.DisposableUtil;
import static org.seasar.extension.jdbc.parameter.Parameter.*;
/**
* @author higa
*
*/
public class AutoSelectImplTest extends TestCase {
private JdbcManagerImpl manager;
@Override
protected void setUp() throws Exception {
manager = new JdbcManagerImpl();
manager.setSyncRegistry(new TransactionSynchronizationRegistryImpl(
new TransactionManagerImpl()));
manager.setDataSource(new MockDataSource());
manager.setDialect(new StandardDialect());
PersistenceConventionImpl convention = new PersistenceConventionImpl();
EntityMetaFactoryImpl emFactory = new EntityMetaFactoryImpl();
emFactory.setPersistenceConvention(convention);
TableMetaFactoryImpl tableMetaFactory = new TableMetaFactoryImpl();
tableMetaFactory.setPersistenceConvention(convention);
emFactory.setTableMetaFactory(tableMetaFactory);
PropertyMetaFactoryImpl pFactory = new PropertyMetaFactoryImpl();
pFactory.setPersistenceConvention(convention);
ColumnMetaFactoryImpl cmFactory = new ColumnMetaFactoryImpl();
cmFactory.setPersistenceConvention(convention);
pFactory.setColumnMetaFactory(cmFactory);
emFactory.setPropertyMetaFactory(pFactory);
emFactory.initialize();
manager.setEntityMetaFactory(emFactory);
}
@Override
protected void tearDown() throws Exception {
DisposableUtil.dispose();
SqlLogRegistry regisry = SqlLogRegistryLocator.getInstance();
regisry.clear();
manager = null;
}
/**
*
*/
public void testCallerClass() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
assertSame(query, query.callerClass(getClass()));
assertEquals(getClass(), query.callerClass);
}
/**
*
*/
public void testCallerMethodName() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
assertSame(query, query.callerMethodName("hoge"));
assertEquals("hoge", query.callerMethodName);
}
/**
*
*/
public void testMaxRows() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
assertSame(query, query.maxRows(100));
assertEquals(100, query.maxRows);
}
/**
*
*/
public void testFetchSize() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
assertSame(query, query.fetchSize(100));
assertEquals(100, query.fetchSize);
}
/**
*
*/
public void testQueryTimeout() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
assertSame(query, query.queryTimeout(100));
assertEquals(100, query.queryTimeout);
}
/**
*
*/
public void testLimit() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
assertSame(query, query.limit(100));
assertEquals(100, query.limit);
}
/**
*
*/
public void testOffset() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
assertSame(query, query.offset(100));
assertEquals(100, query.offset);
}
/**
*
*/
public void testIncludes() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.includes("name", "bbb");
assertEquals(2, query.includesProperties.size());
assertTrue(query.includesProperties.contains("name"));
assertTrue(query.includesProperties.contains("bbb"));
}
/**
*
*/
public void testExcludes() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.excludes("name", "bbb");
assertEquals(2, query.excludesProperties.size());
assertTrue(query.excludesProperties.contains("name"));
assertTrue(query.excludesProperties.contains("bbb"));
}
/**
*
*/
public void testIsTargetProperty_includes() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.includes("name");
query.includes("lazyName"); // eager()を指定しなくても対象
EntityMeta aaaMeta = query.prepareEntityMeta(Aaa.class, null);
assertTrue(query.isTargetProperty(aaaMeta.getPropertyMeta("id"), null));
assertTrue(query.isTargetProperty(aaaMeta.getPropertyMeta("name"), null));
assertTrue(query.isTargetProperty(aaaMeta.getPropertyMeta("lazyName"), null));
assertFalse(query.isTargetProperty(aaaMeta.getPropertyMeta("dto"), null));
assertFalse(query.isTargetProperty(aaaMeta.getPropertyMeta("bbbId"), null));
}
/**
*
*/
public void testIsTargetProperty_includes_eager() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.includes("name");
query.eager("lazyName"); // includes()に含まれていないので対象外
EntityMeta aaaMeta = query.prepareEntityMeta(Aaa.class, null);
assertTrue(query.isTargetProperty(aaaMeta.getPropertyMeta("id"), null));
assertTrue(query.isTargetProperty(aaaMeta.getPropertyMeta("name"), null));
assertFalse(query.isTargetProperty(aaaMeta.getPropertyMeta("lazyName"), null));
assertFalse(query.isTargetProperty(aaaMeta.getPropertyMeta("dto"), null));
assertFalse(query.isTargetProperty(aaaMeta.getPropertyMeta("bbbId"), null));
}
/**
*
*/
public void testIsTargetProperty_excludes() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.excludes("name");
query.eager("lazyName"); // 対象
EntityMeta aaaMeta = query.prepareEntityMeta(Aaa.class, null);
assertTrue(query.isTargetProperty(aaaMeta.getPropertyMeta("id"), null));
assertFalse(query.isTargetProperty(aaaMeta.getPropertyMeta("name"), null));
assertTrue(query.isTargetProperty(aaaMeta.getPropertyMeta("lazyName"), null));
assertTrue(query.isTargetProperty(aaaMeta.getPropertyMeta("dto"), null));
assertTrue(query.isTargetProperty(aaaMeta.getPropertyMeta("bbbId"), null));
}
/**
*
*/
public void testIsTargetProperty_join() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb");
query.leftOuterJoin("bbb.ccc");
query.includes("name");
query.excludes("name"); // includes()に含まれてるので対象
query.excludes("dto"); // 対象外
query.includes("lazyName"); // eager()しなくても対象
query.excludes("bbb");
query.includes("bbb.ccc"); // bbbは対象外だが bbb.cccは対象
query.eager("bbb.lazyName"); // bbbがexcludes()なのでeager()しても対象外
EntityMeta aaaMeta = query.prepareEntityMeta(Aaa.class, null);
assertTrue(query.isTargetProperty(aaaMeta.getPropertyMeta("id"), null));
assertTrue(query.isTargetProperty(aaaMeta.getPropertyMeta("name"), null));
assertTrue(query.isTargetProperty(aaaMeta.getPropertyMeta("lazyName"), null));
assertFalse(query.isTargetProperty(aaaMeta.getPropertyMeta("dto"), null));
assertFalse(query.isTargetProperty(aaaMeta.getPropertyMeta("bbbId"), null));
EntityMeta bbbMeta = query.prepareEntityMeta(Bbb.class, null);
JoinMeta bbbJoinMeta = query.getJoinMeta(0);
assertTrue(query.isTargetProperty(bbbMeta.getPropertyMeta("id"), bbbJoinMeta));
assertFalse(query.isTargetProperty(bbbMeta.getPropertyMeta("name"), bbbJoinMeta));
assertFalse(query.isTargetProperty(bbbMeta.getPropertyMeta("lazyName"), bbbJoinMeta));
assertFalse(query.isTargetProperty(bbbMeta.getPropertyMeta("cccId"), bbbJoinMeta));
EntityMeta cccMeta = query.prepareEntityMeta(Ccc.class, null);
JoinMeta cccJoinMeta = query.getJoinMeta(1);
assertTrue(query.isTargetProperty(cccMeta.getPropertyMeta("id"), cccJoinMeta));
assertTrue(query.isTargetProperty(cccMeta.getPropertyMeta("name"), cccJoinMeta));
}
/**
*
*/
public void testInnerJoin() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.innerJoin("bbb");
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.INNER, joinMeta.getJoinType());
assertTrue(joinMeta.isFetch());
}
/**
*
*/
public void testInnerJoin_condition() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.innerJoin("bbb", "bbb.id < 100");
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.INNER, joinMeta.getJoinType());
assertTrue(joinMeta.isFetch());
assertEquals("bbb.id < 100", joinMeta.getCondition());
}
/**
*
*/
public void testInnerJoin_where() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.innerJoin("bbb", new SimpleWhere().isNull("bbb.ccc", true));
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.INNER, joinMeta.getJoinType());
assertTrue(joinMeta.isFetch());
assertEquals("bbb.ccc is null", joinMeta.getCondition());
}
/**
*
*/
public void testInnerJoin_wheres() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.innerJoin("bbb", new SimpleWhere().isNull("bbb.ccc", true),
new SimpleWhere().eq("bbb.id", 100));
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.INNER, joinMeta.getJoinType());
assertTrue(joinMeta.isFetch());
assertEquals("(bbb.ccc is null) and (bbb.id = ?)", joinMeta.getCondition());
}
/**
*
*/
public void testInnerJoin_fetch() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.innerJoin("bbb", false);
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.INNER, joinMeta.getJoinType());
assertFalse(joinMeta.isFetch());
}
/**
*
*/
public void testInnerJoin_fetch_condition() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.innerJoin("bbb", false, "bbb.id < 100");
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.INNER, joinMeta.getJoinType());
assertFalse(joinMeta.isFetch());
assertEquals("bbb.id < 100", joinMeta.getCondition());
}
/**
*
*/
public void testInnerJoin_fetch_where() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query
.innerJoin("bbb", false, new SimpleWhere().isNull("bbb.ccc",
true));
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.INNER, joinMeta.getJoinType());
assertFalse(joinMeta.isFetch());
assertEquals("bbb.ccc is null", joinMeta.getCondition());
}
/**
*
*/
public void testInnerJoin_fetch_wheres() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query
.innerJoin("bbb", false, new SimpleWhere().isNull("bbb.ccc",
true), new SimpleWhere().eq("bbb.id", 100));
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.INNER, joinMeta.getJoinType());
assertFalse(joinMeta.isFetch());
assertEquals("(bbb.ccc is null) and (bbb.id = ?)", joinMeta.getCondition());
}
/**
*
*/
public void testLeftOuterJoin() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb");
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.LEFT_OUTER, joinMeta.getJoinType());
assertTrue(joinMeta.isFetch());
}
/**
*
*/
public void testLeftOuterJoin_condition() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb", "bbb.id < 100");
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.LEFT_OUTER, joinMeta.getJoinType());
assertTrue(joinMeta.isFetch());
assertEquals("bbb.id < 100", joinMeta.getCondition());
}
/**
*
*/
public void testLeftOuterJoin_where() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb", new SimpleWhere().isNull("bbb.ccc", true));
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.LEFT_OUTER, joinMeta.getJoinType());
assertTrue(joinMeta.isFetch());
assertEquals("bbb.ccc is null", joinMeta.getCondition());
}
/**
*
*/
public void testLeftOuterJoin_wheres() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb", new SimpleWhere().isNull("bbb.ccc", true), new SimpleWhere().eq("bbb.id", 100));
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.LEFT_OUTER, joinMeta.getJoinType());
assertTrue(joinMeta.isFetch());
assertEquals("(bbb.ccc is null) and (bbb.id = ?)", joinMeta.getCondition());
}
/**
*
*/
public void testLeftOuterJoin_fetch() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb", false);
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.LEFT_OUTER, joinMeta.getJoinType());
assertFalse(joinMeta.isFetch());
}
/**
*
*/
public void testLeftOuterJoin_fetch_condition() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb", false, new SimpleWhere().isNull("bbb.ccc",
true));
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.LEFT_OUTER, joinMeta.getJoinType());
assertFalse(joinMeta.isFetch());
assertEquals("bbb.ccc is null", joinMeta.getCondition());
}
/**
*
*/
public void testLeftOuterJoin_fetch_where() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb", false, new SimpleWhere().isNull("bbb.ccc",
true));
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.LEFT_OUTER, joinMeta.getJoinType());
assertFalse(joinMeta.isFetch());
assertEquals("bbb.ccc is null", joinMeta.getCondition());
}
/**
*
*/
public void testLeftOuterJoin_fetch_wheres() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb", false, new SimpleWhere().isNull("bbb.ccc",
true), new SimpleWhere().eq("bbb.id", 100));
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.LEFT_OUTER, joinMeta.getJoinType());
assertFalse(joinMeta.isFetch());
assertEquals("(bbb.ccc is null) and (bbb.id = ?)", joinMeta.getCondition());
}
/**
*
*/
public void testJoin_joinType() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.join("bbb", JoinType.INNER);
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.INNER, joinMeta.getJoinType());
assertTrue(joinMeta.isFetch());
}
/**
*
*/
public void testJoin_joinType_condition() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.join("bbb", JoinType.INNER, "bbb.id < 100");
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.INNER, joinMeta.getJoinType());
assertTrue(joinMeta.isFetch());
assertEquals("bbb.id < 100", joinMeta.getCondition());
}
/**
*
*/
public void testJoin_joinType_where() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.join("bbb", JoinType.INNER, new SimpleWhere().isNull("bbb.ccc",
true));
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.INNER, joinMeta.getJoinType());
assertTrue(joinMeta.isFetch());
assertEquals("bbb.ccc is null", joinMeta.getCondition());
}
/**
*
*/
public void testJoin_joinType_wheres() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.join("bbb", JoinType.INNER, new SimpleWhere().isNull("bbb.ccc",
true), new SimpleWhere().eq("bbb.id", 100));
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.INNER, joinMeta.getJoinType());
assertTrue(joinMeta.isFetch());
assertEquals("(bbb.ccc is null) and (bbb.id = ?)", joinMeta.getCondition());
}
/**
*
*/
public void testJoin_joinType_fetch() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.join("bbb", JoinType.INNER, false);
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.INNER, joinMeta.getJoinType());
assertFalse(joinMeta.isFetch());
}
/**
*
*/
public void testJoin_joinType_fetch_condition() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.join("bbb", JoinType.INNER, false, "bbb.id < 100");
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.INNER, joinMeta.getJoinType());
assertFalse(joinMeta.isFetch());
assertEquals("bbb.id < 100", joinMeta.getCondition());
}
/**
*
*/
public void testJoin_joinType_fetch_where() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.join("bbb", JoinType.INNER, false, new SimpleWhere().isNull(
"bbb.ccc", true));
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.INNER, joinMeta.getJoinType());
assertFalse(joinMeta.isFetch());
assertEquals("bbb.ccc is null", joinMeta.getCondition());
}
/**
*
*/
public void testJoin_joinType_fetch_wheres() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.join("bbb", JoinType.INNER, false, new SimpleWhere().isNull(
"bbb.ccc", true), new SimpleWhere().eq("bbb.id", 100));
assertEquals(1, query.getJoinMetaSize());
JoinMeta joinMeta = query.getJoinMeta(0);
assertEquals("bbb", joinMeta.getName());
assertEquals(JoinType.INNER, joinMeta.getJoinType());
assertFalse(joinMeta.isFetch());
assertEquals("(bbb.ccc is null) and (bbb.id = ?)", joinMeta.getCondition());
}
/**
*
*/
public void testCreateTableAlias() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
assertEquals("T1_", query.createTableAlias());
assertEquals("T2_", query.createTableAlias());
}
/**
*
*/
public void testPrepareTableAlias() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
String tableAlias = query.prepareTableAlias(null);
assertEquals("T1_", tableAlias);
assertSame(tableAlias, query.getTableAlias(null));
}
/**
*
*/
public void testPrepareEntityMeta() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
EntityMeta entityMeta = query.prepareEntityMeta(Aaa.class, null);
assertEquals("Aaa", entityMeta.getName());
assertSame(entityMeta, query.getEntityMeta(null));
}
/**
*
*/
public void testPrepareEntityMeta_nonEntity() {
AutoSelectImpl<AaaDto> query = new AutoSelectImpl<AaaDto>(manager,
AaaDto.class);
query.prepareCallerClassAndMethodName("getResultList");
try {
query.prepareEntityMeta(query.baseClass, null);
fail();
} catch (NonEntityRuntimeException e) {
System.out.println(e);
}
}
/**
*
*/
public void testPrepareEntity_selectClause() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
List<PropertyMapper> propertyMapperList = new ArrayList<PropertyMapper>(
50);
List<Integer> idIndexList = new ArrayList<Integer>();
EntityMeta entityMeta = query.prepareEntityMeta(query.baseClass, null);
String tableAlias = query.prepareTableAlias(null);
query.prepareEntity(entityMeta, null, tableAlias, propertyMapperList,
idIndexList);
assertEquals(
"T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_, T1_.DTO as C4_",
query.selectClause.toSql());
}
/**
*
*/
public void testPrepareEntity_selectClause_includes() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.includes("name", "bbbId");
query.prepareCallerClassAndMethodName("getResultList");
List<PropertyMapper> propertyMapperList = new ArrayList<PropertyMapper>(
50);
List<Integer> idIndexList = new ArrayList<Integer>();
EntityMeta entityMeta = query.prepareEntityMeta(query.baseClass, null);
String tableAlias = query.prepareTableAlias(null);
query.prepareEntity(entityMeta, null, tableAlias, propertyMapperList,
idIndexList);
assertEquals("T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_",
query.selectClause.toSql());
}
/**
*
*/
public void testPrepareEntity_selectClause_excludes() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.excludes("name", "bbbId");
query.prepareCallerClassAndMethodName("getResultList");
List<PropertyMapper> propertyMapperList = new ArrayList<PropertyMapper>(
50);
List<Integer> idIndexList = new ArrayList<Integer>();
EntityMeta entityMeta = query.prepareEntityMeta(query.baseClass, null);
String tableAlias = query.prepareTableAlias(null);
query.prepareEntity(entityMeta, null, tableAlias, propertyMapperList,
idIndexList);
assertEquals("T1_.ID as C1_, T1_.DTO as C2_", query.selectClause
.toSql());
}
/**
*
*/
public void testPrepareEntity_selectClause_includesAndExcludes() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.includes("name", "bbbId");
query.excludes("id", "name");
query.prepareCallerClassAndMethodName("getResultList");
List<PropertyMapper> propertyMapperList = new ArrayList<PropertyMapper>(
50);
List<Integer> idIndexList = new ArrayList<Integer>();
EntityMeta entityMeta = query.prepareEntityMeta(query.baseClass, null);
String tableAlias = query.prepareTableAlias(null);
query.prepareEntity(entityMeta, null, tableAlias, propertyMapperList,
idIndexList);
assertEquals("T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_",
query.selectClause.toSql());
}
/**
*
*/
public void testPrepareEntity_valueTypes() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
List<PropertyMapper> propertyMapperList = new ArrayList<PropertyMapper>(
50);
List<Integer> idIndexList = new ArrayList<Integer>();
EntityMeta entityMeta = query.prepareEntityMeta(query.baseClass, null);
String tableAlias = query.prepareTableAlias(null);
query.prepareEntity(entityMeta, null, tableAlias, propertyMapperList,
idIndexList);
ValueType[] valueTypes = query.getValueTypes();
assertEquals(4, valueTypes.length);
assertEquals(ValueTypes.INTEGER, valueTypes[0]);
assertEquals(ValueTypes.STRING, valueTypes[1]);
assertEquals(ValueTypes.INTEGER, valueTypes[2]);
assertEquals(ValueTypes.SERIALIZABLE_BLOB, valueTypes[3]);
}
/**
* @throws Exception
*
*/
public void testPrepareEntity_propertyMappers() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
List<PropertyMapper> propertyMapperList = new ArrayList<PropertyMapper>(
50);
List<Integer> idIndexList = new ArrayList<Integer>();
EntityMeta entityMeta = query.prepareEntityMeta(query.baseClass, null);
String tableAlias = query.prepareTableAlias(null);
query.prepareEntity(entityMeta, null, tableAlias, propertyMapperList,
idIndexList);
PropertyMapperImpl[] propertyMappers = query
.toPropertyMapperArray(propertyMapperList);
assertEquals(4, propertyMappers.length);
assertEquals(0, propertyMappers[0].getPropertyIndex());
assertEquals(Aaa.class.getDeclaredField("id"), propertyMappers[0]
.getField());
assertEquals(1, propertyMappers[1].getPropertyIndex());
assertEquals(Aaa.class.getDeclaredField("name"), propertyMappers[1]
.getField());
assertEquals(2, propertyMappers[2].getPropertyIndex());
assertEquals(Aaa.class.getDeclaredField("bbbId"), propertyMappers[2]
.getField());
assertEquals(3, propertyMappers[3].getPropertyIndex());
assertEquals(Aaa.class.getDeclaredField("dto"), propertyMappers[3]
.getField());
}
/**
* @throws Exception
*
*/
public void testPrepareEntity_idIndices() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
List<PropertyMapper> propertyMapperList = new ArrayList<PropertyMapper>(
50);
List<Integer> idIndexList = new ArrayList<Integer>();
EntityMeta entityMeta = query.prepareEntityMeta(query.baseClass, null);
String tableAlias = query.prepareTableAlias(null);
query.prepareEntity(entityMeta, null, tableAlias, propertyMapperList,
idIndexList);
int[] idIndices = query.toIdIndexArray(idIndexList);
assertEquals(1, idIndices.length);
assertEquals(0, idIndices[0]);
}
/**
* @throws Exception
*
*/
public void testPrepareEntity_clob() throws Exception {
AutoSelectImpl<MyAaa> query = new AutoSelectImpl<MyAaa>(manager,
MyAaa.class);
query.prepareCallerClassAndMethodName("getResultList");
List<PropertyMapper> propertyMapperList = new ArrayList<PropertyMapper>(
50);
List<Integer> idIndexList = new ArrayList<Integer>();
EntityMeta entityMeta = query.prepareEntityMeta(query.baseClass, null);
String tableAlias = query.prepareTableAlias(null);
query.prepareEntity(entityMeta, null, tableAlias, propertyMapperList,
idIndexList);
ValueType[] valueTypes = query.getValueTypes();
assertEquals(2, valueTypes.length);
assertEquals(ValueTypes.INTEGER, valueTypes[0]);
assertEquals(ValueTypes.CLOB, valueTypes[1]);
}
/**
*
*/
public void testPrepareEntity_getCount() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.count = true;
query.prepareCallerClassAndMethodName("getCount");
List<PropertyMapper> propertyMapperList = new ArrayList<PropertyMapper>(
50);
List<Integer> idIndexList = new ArrayList<Integer>();
EntityMeta entityMeta = query.prepareEntityMeta(query.baseClass, null);
String tableAlias = query.prepareTableAlias(null);
query.prepareEntity(entityMeta, null, tableAlias, propertyMapperList,
idIndexList);
assertEquals("count(*)", query.selectClause.toSql());
ValueType[] valueTypes = query.getValueTypes();
assertEquals(1, valueTypes.length);
assertEquals(ValueTypes.LONG, valueTypes[0]);
}
/**
*
*/
public void testPrepareEntity_selectClause_eager() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.eager("aaa.lazyName");
query.prepareCallerClassAndMethodName("getResultList");
List<PropertyMapper> propertyMapperList = new ArrayList<PropertyMapper>(
50);
List<Integer> idIndexList = new ArrayList<Integer>();
EntityMeta entityMeta = query.prepareEntityMeta(query.baseClass, null);
JoinMeta joinMeta = new JoinMeta("aaa");
String tableAlias = query.prepareTableAlias(null);
query.prepareEntity(entityMeta, joinMeta, tableAlias,
propertyMapperList, idIndexList);
assertEquals(
"T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_, T1_.DTO as C4_, T1_.LAZY_NAME as C5_",
query.selectClause.toSql());
}
/**
* @throws Exception
*
*/
public void testPrepareTarget_entityMapper() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
AbstractEntityMapper entityMapper = query.getEntityMapper(null);
assertNotNull(entityMapper);
PropertyMapperImpl[] propertyMappers = (PropertyMapperImpl[]) entityMapper
.getPropertyMappers();
assertEquals(4, propertyMappers.length);
assertEquals(0, propertyMappers[0].getPropertyIndex());
assertEquals(Aaa.class.getDeclaredField("id"), propertyMappers[0]
.getField());
assertEquals(1, propertyMappers[1].getPropertyIndex());
assertEquals(Aaa.class.getDeclaredField("name"), propertyMappers[1]
.getField());
assertEquals(2, propertyMappers[2].getPropertyIndex());
assertEquals(Aaa.class.getDeclaredField("bbbId"), propertyMappers[2]
.getField());
assertEquals(3, propertyMappers[3].getPropertyIndex());
assertEquals(Aaa.class.getDeclaredField("dto"), propertyMappers[3]
.getField());
int[] idIndices = entityMapper.getIdIndices();
assertEquals(1, idIndices.length);
assertEquals(0, idIndices[0]);
}
/**
* @throws Exception
*
*/
public void testPrepareTarget_fromClause() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
assertEquals(" from AAA T1_", query.fromClause.toSql());
}
/**
* @throws Exception
*
*/
public void testPrepareJoin_tableAlias() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("bbb"));
assertEquals("T2_", query.getTableAlias("bbb"));
}
/**
* @throws Exception
*
*/
public void testSplitBaseAndProperty() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
String[] names = query.splitBaseAndProperty("bbb");
assertEquals(2, names.length);
assertNull(names[0]);
assertEquals("bbb", names[1]);
}
/**
* @throws Exception
*
*/
public void testSplitBaseAndProperty_nest() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
String[] names = query.splitBaseAndProperty("bbb.ccc");
assertEquals(2, names.length);
assertEquals("bbb", names[0]);
assertEquals("ccc", names[1]);
}
/**
* @throws Exception
*
*/
public void testSplitBaseAndProperty_nest2() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
String[] names = query.splitBaseAndProperty("bbb.ccc.ddd");
assertEquals(2, names.length);
assertEquals("bbb.ccc", names[0]);
assertEquals("ddd", names[1]);
}
/**
* @throws Exception
*
*/
public void testGetBaseEntityMeta() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
EntityMeta entityMeta = query.getBaseEntityMeta("bbb", null);
assertEquals("Aaa", entityMeta.getName());
}
/**
* @throws Exception
*
*/
public void testGetBaseEntityMeta_baseJoinNotFound() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
try {
query.getBaseEntityMeta("bbb.ccc", "bbb");
fail();
} catch (BaseJoinNotFoundRuntimeException e) {
System.out.println(e);
assertEquals("Aaa", e.getEntityName());
assertEquals("bbb.ccc", e.getJoin());
assertEquals("bbb", e.getBaseJoin());
}
}
/**
* @throws Exception
*
*/
public void testGetBaseEntityMapper() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
AbstractEntityMapper entityMapper = query.getBaseEntityMapper("bbb",
null);
assertEquals(Aaa.class, entityMapper.getEntityClass());
}
/**
* @throws Exception
*
*/
public void testGetBaseEntityMapper_baseJoinNotFound() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
try {
query.getBaseEntityMapper("bbb.ccc", "bbb");
fail();
} catch (BaseJoinNotFoundRuntimeException e) {
System.out.println(e);
assertEquals("Aaa", e.getEntityName());
assertEquals("bbb.ccc", e.getJoin());
assertEquals("bbb", e.getBaseJoin());
}
}
/**
* @throws Exception
*
*/
public void testGetPropertyMeta() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
EntityMeta entityMeta = query.getBaseEntityMeta("bbb", null);
PropertyMeta propertyMeta = query.getPropertyMeta(entityMeta, "bbb",
"bbb");
assertEquals("bbb", propertyMeta.getName());
}
/**
* @throws Exception
*
*/
public void testGetPropertyMeta_propertyMetaNotFound() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
EntityMeta entityMeta = query.getBaseEntityMeta("xxx", null);
try {
query.getPropertyMeta(entityMeta, "xxx", "xxx");
fail();
} catch (PropertyNotFoundRuntimeException e) {
System.out.println(e);
assertEquals("Aaa", e.getEntityName());
assertEquals("xxx", e.getPropertyName());
}
}
/**
* @throws Exception
*
*/
public void testGetInverseEntityMeta() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
EntityMeta entityMeta = query.getInverseEntityMeta(Bbb.class, "bbb");
assertEquals("Bbb", entityMeta.getName());
assertSame(entityMeta, query.getEntityMeta("bbb"));
}
/**
* @throws Exception
*
*/
public void testGetInverseEntityMeta_badEntity() throws Exception {
AutoSelectImpl<BadAaa> query = new AutoSelectImpl<BadAaa>(manager,
BadAaa.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
try {
query.getInverseEntityMeta(BadBbb.class, "bbb");
fail();
} catch (RuntimeException e) {
System.out.println(e);
}
}
/**
* @throws Exception
*
*/
public void testGetInverseEntityMeta_joinDuplicated() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.getInverseEntityMeta(Bbb.class, "bbb");
try {
query.getInverseEntityMeta(Bbb.class, "bbb");
fail();
} catch (JoinDuplicatedRuntimeException e) {
System.out.println(e);
}
}
/**
* @throws Exception
*
*/
public void testGetInversePropertyMeta() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
EntityMeta baseEntityMeta = query.getBaseEntityMeta("bbb", null);
PropertyMeta relationshipPropertyMeta = query.getPropertyMeta(
baseEntityMeta, "bbb", "bbb");
EntityMeta inverseEntityMeta = query.getInverseEntityMeta(Bbb.class,
"bbb");
PropertyMeta inversePropertyMeta = query.getInversePropertyMeta(
inverseEntityMeta, relationshipPropertyMeta);
assertNotNull(inversePropertyMeta);
assertEquals("aaa", inversePropertyMeta.getName());
}
/**
* @throws Exception
*
*/
public void testGetInversePropertyMeta_nonOwner() throws Exception {
AutoSelectImpl<Bbb> query = new AutoSelectImpl<Bbb>(manager, Bbb.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
EntityMeta baseEntityMeta = query.getBaseEntityMeta("aaa", null);
PropertyMeta relationshipPropertyMeta = query.getPropertyMeta(
baseEntityMeta, "aaa", "aaa");
EntityMeta inverseEntityMeta = query.getInverseEntityMeta(Aaa.class,
"aaa");
PropertyMeta inversePropertyMeta = query.getInversePropertyMeta(
inverseEntityMeta, relationshipPropertyMeta);
assertNotNull(inversePropertyMeta);
assertEquals("bbb", inversePropertyMeta.getName());
}
/**
* @throws Exception
*
*/
public void testCreateRelationshipEntityMapper_manyToOne() throws Exception {
AutoSelectImpl<Ddd> query = new AutoSelectImpl<Ddd>(manager, Ddd.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("bbb"));
AbstractRelationshipEntityMapper mapper = (AbstractRelationshipEntityMapper) query
.getEntityMapper("bbb");
assertNotNull(mapper);
assertEquals(ManyToOneEntityMapperImpl.class, mapper.getClass());
assertEquals(Bbb.class, mapper.getEntityClass());
assertEquals(Ddd.class.getDeclaredField("bbb"), mapper.getField());
assertEquals(Bbb.class.getDeclaredField("ddds"), mapper
.getInverseField());
}
/**
* @throws Exception
*
*/
public void testCreateRelationshipEntityMapper_manyToOne_nullInverse()
throws Exception {
AutoSelectImpl<Bbb> query = new AutoSelectImpl<Bbb>(manager, Bbb.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("ccc"));
AbstractRelationshipEntityMapper mapper = (AbstractRelationshipEntityMapper) query
.getEntityMapper("ccc");
assertNotNull(mapper);
assertEquals(OneToOneEntityMapperImpl.class, mapper.getClass());
assertEquals(Ccc.class, mapper.getEntityClass());
assertEquals(Bbb.class.getDeclaredField("ccc"), mapper.getField());
assertNull(mapper.getInverseField());
}
/**
* @throws Exception
*
*/
public void testCreateRelationshipEntityMapper_oneToOne() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("bbb"));
AbstractRelationshipEntityMapper mapper = (AbstractRelationshipEntityMapper) query
.getEntityMapper("bbb");
assertNotNull(mapper);
assertEquals(OneToOneEntityMapperImpl.class, mapper.getClass());
assertEquals(Bbb.class, mapper.getEntityClass());
assertEquals(Aaa.class.getDeclaredField("bbb"), mapper.getField());
assertEquals(Bbb.class.getDeclaredField("aaa"), mapper
.getInverseField());
}
/**
* @throws Exception
*
*/
public void testCreateRelationshipEntityMapper_oneToOne_inverse()
throws Exception {
AutoSelectImpl<Bbb> query = new AutoSelectImpl<Bbb>(manager, Bbb.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("aaa"));
AbstractRelationshipEntityMapper mapper = (AbstractRelationshipEntityMapper) query
.getEntityMapper("aaa");
assertNotNull(mapper);
assertEquals(OneToOneEntityMapperImpl.class, mapper.getClass());
assertEquals(Aaa.class, mapper.getEntityClass());
assertEquals(Bbb.class.getDeclaredField("aaa"), mapper.getField());
assertEquals(Aaa.class.getDeclaredField("bbb"), mapper
.getInverseField());
}
/**
* @throws Exception
*
*/
public void testCreateRelationshipEntityMapper_oneToMany() throws Exception {
AutoSelectImpl<Bbb> query = new AutoSelectImpl<Bbb>(manager, Bbb.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("ddds"));
AbstractRelationshipEntityMapper mapper = (AbstractRelationshipEntityMapper) query
.getEntityMapper("ddds");
assertNotNull(mapper);
assertEquals(OneToManyEntityMapperImpl.class, mapper.getClass());
assertEquals(Ddd.class, mapper.getEntityClass());
assertEquals(Bbb.class.getDeclaredField("ddds"), mapper.getField());
assertEquals(Ddd.class.getDeclaredField("bbb"), mapper
.getInverseField());
}
/**
* @throws Exception
*
*/
public void testPrepareJoin_sql() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("bbb"));
String expected = "select T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_, T1_.DTO as C4_, T2_.ID as C5_, T2_.NAME as C6_, T2_.CCC_ID as C7_ from AAA T1_ left outer join BBB T2_ on T1_.BBB_ID = T2_.ID";
assertEquals(expected, query.toSql());
}
/**
* @throws Exception
*
*/
public void testPrepareJoin_sql_includes() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.includes("name", "bbbId");
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("bbb"));
String expected = "select T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_, T2_.ID as C4_ from AAA T1_ left outer join BBB T2_ on T1_.BBB_ID = T2_.ID";
assertEquals(expected, query.toSql());
}
/**
* @throws Exception
*
*/
public void testPrepareJoin_sql_excludes() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.excludes("name", "bbbId");
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("bbb"));
String expected = "select T1_.ID as C1_, T1_.DTO as C2_, T2_.ID as C3_, T2_.NAME as C4_, T2_.CCC_ID as C5_ from AAA T1_ left outer join BBB T2_ on T1_.BBB_ID = T2_.ID";
assertEquals(expected, query.toSql());
}
/**
* @throws Exception
*
*/
public void testPrepareJoin_sql_mappedBy() throws Exception {
AutoSelectImpl<Bbb> query = new AutoSelectImpl<Bbb>(manager, Bbb.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("aaa"));
String expected = "select T1_.ID as C1_, T1_.NAME as C2_, T1_.CCC_ID as C3_, T2_.ID as C4_, T2_.NAME as C5_, T2_.BBB_ID as C6_, T2_.DTO as C7_ from BBB T1_ left outer join AAA T2_ on T2_.BBB_ID = T1_.ID";
assertEquals(expected, query.toSql());
}
/**
*
*/
public void testPrepareJoin_sql_mappedBy_includes() {
AutoSelectImpl<Bbb> query = new AutoSelectImpl<Bbb>(manager, Bbb.class);
query.includes("name", "aaa");
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("aaa"));
String expected = "select T1_.ID as C1_, T1_.NAME as C2_, T2_.ID as C3_, T2_.NAME as C4_, T2_.BBB_ID as C5_, T2_.DTO as C6_ from BBB T1_ left outer join AAA T2_ on T2_.BBB_ID = T1_.ID";
assertEquals(expected, query.toSql());
}
/**
*
*/
public void testPrepareJoin_sql_mappedBy_excludes() {
AutoSelectImpl<Bbb> query = new AutoSelectImpl<Bbb>(manager, Bbb.class);
query.excludes("name", "aaa");
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("aaa"));
String expected = "select T1_.ID as C1_, T1_.CCC_ID as C2_, T2_.ID as C3_ from BBB T1_ left outer join AAA T2_ on T2_.BBB_ID = T1_.ID";
assertEquals(expected, query.toSql());
}
/**
* @throws Exception
*
*/
public void testPrepareJoin_sql_nest() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("bbb"));
query.prepareJoin(new JoinMeta("bbb.ccc"));
String expected = "select T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_, T1_.DTO as C4_, T2_.ID as C5_, T2_.NAME as C6_, T2_.CCC_ID as C7_, T3_.ID as C8_, T3_.NAME as C9_ from AAA T1_ left outer join BBB T2_ on T1_.BBB_ID = T2_.ID left outer join CCC T3_ on T2_.CCC_ID = T3_.ID";
assertEquals(expected, query.toSql());
}
/**
*
*/
public void testPrepareJoin_sql_nest_includesAndExcludes() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.includes("name", "bbb.name", "bbb.ccc.name");
query.excludes("name", "bbb", "bbb.ccc");
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("bbb"));
query.prepareJoin(new JoinMeta("bbb.ccc"));
String expected = "select T1_.ID as C1_, T1_.NAME as C2_, T2_.ID as C3_, T2_.NAME as C4_, T3_.ID as C5_, T3_.NAME as C6_ from AAA T1_ left outer join BBB T2_ on T1_.BBB_ID = T2_.ID left outer join CCC T3_ on T2_.CCC_ID = T3_.ID";
assertEquals(expected, query.toSql());
}
/**
*
*/
public void testPrepareJoin_sql_nest_includesAndExcludes2() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.includes("id", "name", "bbb", "bbb.ccc");
query.excludes("name", "bbb.name", "bbb.ccc.name");
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("bbb"));
query.prepareJoin(new JoinMeta("bbb.ccc"));
String expected = "select T1_.ID as C1_, T1_.NAME as C2_, T2_.ID as C3_, T2_.CCC_ID as C4_, T3_.ID as C5_ from AAA T1_ left outer join BBB T2_ on T1_.BBB_ID = T2_.ID left outer join CCC T3_ on T2_.CCC_ID = T3_.ID";
assertEquals(expected, query.toSql());
}
/**
*
*/
public void testPrepareJoin_sql_nest_includesAndExcludes3() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.includes("id", "name", "bbb");
query.excludes("bbb.ccc");
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("bbb"));
query.prepareJoin(new JoinMeta("bbb.ccc"));
String expected = "select T1_.ID as C1_, T1_.NAME as C2_, T2_.ID as C3_, T2_.NAME as C4_, T2_.CCC_ID as C5_, T3_.ID as C6_ from AAA T1_ left outer join BBB T2_ on T1_.BBB_ID = T2_.ID left outer join CCC T3_ on T2_.CCC_ID = T3_.ID";
assertEquals(expected, query.toSql());
}
/**
*
*/
public void testPrepareJoin_sql_nest_includesAndExcludes4() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.includes("id", "name", "bbb", "bbb.ccc");
query.excludes("bbb.ccc");
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("bbb"));
query.prepareJoin(new JoinMeta("bbb.ccc"));
String expected = "select T1_.ID as C1_, T1_.NAME as C2_, T2_.ID as C3_, T2_.NAME as C4_, T2_.CCC_ID as C5_, T3_.ID as C6_, T3_.NAME as C7_ from AAA T1_ left outer join BBB T2_ on T1_.BBB_ID = T2_.ID left outer join CCC T3_ on T2_.CCC_ID = T3_.ID";
assertEquals(expected, query.toSql());
}
/**
*
*/
public void testPrepareJoin_sql_nest_includesAndExcludes5() {
AutoSelectImpl<Bbb> query = new AutoSelectImpl<Bbb>(manager, Bbb.class);
query.includes("id", "name", "aaa");
query.excludes("aaa.bbb");
query.includes("aaa.bbb.ccc");
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("aaa"));
query.prepareJoin(new JoinMeta("aaa.bbb"));
query.prepareJoin(new JoinMeta("aaa.bbb.ccc"));
String expected = "select T1_.ID as C1_, T1_.NAME as C2_, T2_.ID as C3_, T2_.NAME as C4_, T2_.BBB_ID as C5_, T2_.DTO as C6_, T3_.ID as C7_, T4_.ID as C8_, T4_.NAME as C9_ from BBB T1_ left outer join AAA T2_ on T2_.BBB_ID = T1_.ID left outer join BBB T3_ on T2_.BBB_ID = T3_.ID left outer join CCC T4_ on T3_.CCC_ID = T4_.ID";
assertEquals(expected, query.toSql());
}
/**
* @throws Exception
*
*/
public void testPrepareJoin_sql_condition() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepareCallerClassAndMethodName("getResultList");
query.prepareTarget();
query.prepareJoin(new JoinMeta("bbb", "bbb.id = 100", new Object[0]));
String expected = "select T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_, T1_.DTO as C4_, T2_.ID as C5_, T2_.NAME as C6_, T2_.CCC_ID as C7_ from AAA T1_ left outer join BBB T2_ on T1_.BBB_ID = T2_.ID and T2_.ID = 100";
assertEquals(expected, query.toSql());
}
/**
* @throws Exception
*
*/
public void testCreateResultListResultSetHandler_nopaging()
throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepare("getResultList");
ResultSetHandler handler = query.createResultListResultSetHandler();
assertEquals(BeanListAutoResultSetHandler.class, handler.getClass());
}
/**
* @throws Exception
*
*/
public void testCreateResultListResultSetHandler_paging_notSupportsLimit()
throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.limit(10);
query.prepare("getResultList");
ResultSetHandler handler = query.createResultListResultSetHandler();
assertEquals(BeanListAutoResultSetHandler.class, handler.getClass());
}
/**
* @throws Exception
*
*/
public void testCreateResultListResultSetHandler_paging_supportsLimit()
throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
manager.setDialect(new PostgreDialect());
query.limit(10);
query.prepare("getResultList");
ResultSetHandler handler = query.createResultListResultSetHandler();
assertEquals(BeanListAutoResultSetHandler.class, handler.getClass());
}
/**
* @throws Exception
*
*/
public void testCreateSingleResultResultSetHandler() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepare("getResultList");
ResultSetHandler handler = query.createSingleResultResultSetHandler();
assertEquals(BeanAutoResultSetHandler.class, handler.getClass());
}
/**
* @throws Exception
*
*/
public void testCreateIterateResultSetHandler() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepare("getResultList");
ResultSetHandler handler = query
.createIterateResultSetHandler(new IterationCallback<Aaa, Object>() {
public Object iterate(Aaa entity, IterationContext context) {
return null;
}
});
assertEquals(BeanIterationAutoResultSetHandler.class, handler
.getClass());
}
/**
*
*/
public void testPrepareId() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.id(1);
query.prepare("getSingleResult");
assertEquals(" where T1_.ID = ?", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals(new Integer(1), variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareId_invalidLength() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
try {
query.id(1, 2);
fail();
} catch (IllegalIdPropertySizeRuntimeException e) {
System.out.println(e);
}
}
/**
*
*/
public void testIdSql() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.id(1);
query.prepare("getResultList");
assertEquals(
"select T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_, T1_.DTO as C4_ "
+ "from AAA T1_ " + "where T1_.ID = ?",
query.executedSql);
}
/**
*
*/
public void testPrepareVersion() {
AutoSelectImpl<Eee> query = new AutoSelectImpl<Eee>(manager, Eee.class);
query.id(1);
query.version(2);
query.prepare("getSingleResult");
assertEquals(" where T1_.ID = ? and T1_.VERSION = ?", query.whereClause
.toSql());
Object[] variables = query.getParamValues();
assertEquals(2, variables.length);
assertEquals(new Integer(1), variables[0]);
assertEquals(new Integer(2), variables[1]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(2, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
assertEquals(Integer.class, variableClasses[1]);
}
/**
*
*/
public void testPrepareVersion_noVersionProperty() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.id(1);
try {
query.version(2);
fail();
} catch (VersionPropertyNotExistsRuntimeException e) {
System.out.println(e);
}
}
/**
*
*/
public void testPrepareVersion_withoutIdProperty() {
AutoSelectImpl<Eee> query = new AutoSelectImpl<Eee>(manager, Eee.class);
query.version(2);
try {
query.prepare("getSingleResult");
fail();
} catch (UnsupportedOperationException e) {
System.out.println(e);
}
}
/**
*
*/
public void testIdVersionSql() {
AutoSelectImpl<Eee> query = new AutoSelectImpl<Eee>(manager, Eee.class);
query.id(1);
query.version(2);
query.prepare("getResultList");
assertEquals(
"select T1_.ID as C1_, T1_.NAME as C2_, T1_.LONG_TEXT as C3_, T1_.FFF_ID as C4_, T1_.VERSION as C5_, T1_.LAST_UPDATED as C6_ "
+ "from EEE T1_ "
+ "where T1_.ID = ? and T1_.VERSION = ?",
query.executedSql);
}
/**
*
*/
public void testIdVersionSql_withCondition() {
AutoSelectImpl<Eee> query = new AutoSelectImpl<Eee>(manager, Eee.class);
query.id(1).version(2).where("lastUpdated = ?",
Parameter.date(new Date()));
query.prepare("getResultList");
assertEquals(
"select T1_.ID as C1_, T1_.NAME as C2_, T1_.LONG_TEXT as C3_, T1_.FFF_ID as C4_, T1_.VERSION as C5_, T1_.LAST_UPDATED as C6_ "
+ "from EEE T1_ "
+ "where T1_.ID = ? and T1_.VERSION = ? and (T1_.LAST_UPDATED = ?)",
query.executedSql);
assertEquals(new Integer(1), query.paramList.get(0).value);
assertEquals(new Integer(2), query.paramList.get(1).value);
assertTrue(query.paramList.get(2).value instanceof Date);
}
/**
*
*/
public void testIdVersionSql_withJoinCondition() {
AutoSelectImpl<Eee> query = new AutoSelectImpl<Eee>(manager, Eee.class);
query.leftOuterJoin("fff", false, "fff.id = 100").id(1).version(2)
.where("lastUpdated = ?", Parameter.date(new Date()));
query.prepare("getResultList");
assertEquals(
"select T1_.ID as C1_, T1_.NAME as C2_, T1_.LONG_TEXT as C3_, T1_.FFF_ID as C4_, T1_.VERSION as C5_, T1_.LAST_UPDATED as C6_ "
+ "from EEE T1_ left outer join FFF T2_ on T1_.FFF_ID = T2_.ID and T2_.ID = 100 "
+ "where T1_.ID = ? and T1_.VERSION = ? and (T1_.LAST_UPDATED = ?)",
query.executedSql);
}
/**
* @throws Exception
*
*/
public void testWhere_map() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> m = new HashMap<String, Object>();
m.put("aaa", 1);
assertSame(query, query.where(m));
assertSame(m, query.conditions);
}
/**
* @throws Exception
*
*/
public void testWhere_criteria() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
assertSame(query, query.where("id = ?", 1));
assertEquals("id = ?", query.criteria);
assertEquals(1, query.whereParams.size());
assertEquals(1, query.whereParams.get(0));
}
/**
* @throws Exception
*
*/
public void testWhere_where() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
assertSame(query, query.where(new SimpleWhere().eq("id", 1)));
query.prepare("getResultList");
assertEquals("id = ?", query.criteria);
assertEquals(1, query.getParamSize());
assertEquals(1, query.getParam(0).value);
}
/**
* @throws Exception
*
*/
public void testWhere_wheres() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
assertSame(query, query.where(new SimpleWhere().eq("id", 1),
new SimpleWhere().eq("name", "aaa")));
query.prepare("getResultList");
assertEquals("(id = ?) and (name = ?)", query.criteria);
assertEquals(2, query.getParamSize());
assertEquals(1, query.getParam(0).value);
assertEquals("aaa", query.getParam(1).value);
}
/**
* @throws Exception
*
*/
public void testWhere_emptyWhere() throws Exception {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
assertSame(query, query.where(new SimpleWhere().eq("name", null)));
assertNull(query.criteria);
assertEquals(0, query.getParamSize());
}
/**
* @throws Exception
*
*/
public void testWhere_wrapper() throws Exception {
AutoSelectImpl<Emp> query = new AutoSelectImpl<Emp>(manager, Emp.class);
assertSame(query, query.where(new SimpleWhere().eq("hiredate",
timestamp(new Date(0)))));
query.prepare("getResultList");
assertEquals("hiredate = ?", query.criteria);
assertEquals(1, query.getParamSize());
assertEquals(new Date(0), query.getParam(0).value);
}
/**
*
*/
public void testPrepareCondition_EQ() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("id", "1");
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T1_.ID = ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals("1", variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_EQ2() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("id_EQ", 1);
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T1_.ID = ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals(1, variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_EQ_NEST() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("bbb.id", 1);
query.leftOuterJoin("bbb").where(w);
query.prepare("getResultList");
assertEquals(" where (T2_.ID = ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals(1, variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_NE() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("id_NE", 1);
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T1_.ID <> ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals(1, variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_NE_NEST() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb");
Map<String, Object> w = new HashMap<String, Object>();
w.put("bbb.id_NE", 1);
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T2_.ID <> ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals(1, variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_LT() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("id_LT", 1);
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T1_.ID < ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals(1, variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_LT_NEST() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb");
Map<String, Object> w = new HashMap<String, Object>();
w.put("bbb.id_LT", 1);
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T2_.ID < ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals(1, variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_LE() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("id_LE", 1);
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T1_.ID <= ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals(1, variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_LE_NEST() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb");
Map<String, Object> w = new HashMap<String, Object>();
w.put("bbb.id_LE", 1);
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T2_.ID <= ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals(1, variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_GT() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("id_GT", 1);
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T1_.ID > ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals(1, variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_GT_NEST() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb");
Map<String, Object> w = new HashMap<String, Object>();
w.put("bbb.id_GT", 1);
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T2_.ID > ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals(1, variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_GE() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("id_GE", 1);
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T1_.ID >= ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals(1, variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_GE_NEST() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb");
Map<String, Object> w = new HashMap<String, Object>();
w.put("bbb.id_GE", 1);
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T2_.ID >= ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals(1, variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_IN() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("id_IN", new Object[] { 1, 2 });
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T1_.ID in (?, ?))", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(2, variables.length);
assertEquals(1, variables[0]);
assertEquals(2, variables[1]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(2, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
assertEquals(Integer.class, variableClasses[1]);
}
/**
*
*/
public void testPrepareCondition_IN_List() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("id_IN", Arrays.asList(1, 2));
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T1_.ID in (?, ?))", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(2, variables.length);
assertEquals(1, variables[0]);
assertEquals(2, variables[1]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(2, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
assertEquals(Integer.class, variableClasses[1]);
}
/**
*
*/
public void testPrepareCondition_IN_nest() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb");
Map<String, Object> w = new HashMap<String, Object>();
w.put("bbb.id_IN", new Object[] { 1, 2 });
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T2_.ID in (?, ?))", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(2, variables.length);
assertEquals(1, variables[0]);
assertEquals(2, variables[1]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(2, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
assertEquals(Integer.class, variableClasses[1]);
}
/**
*
*/
public void testPrepareCondition_NOT_IN() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("id_NOT_IN", new Object[] { 1, 2 });
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T1_.ID not in (?, ?))", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(2, variables.length);
assertEquals(1, variables[0]);
assertEquals(2, variables[1]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(2, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
assertEquals(Integer.class, variableClasses[1]);
}
/**
*
*/
public void testPrepareCondition_NOT_IN_List() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("id_NOT_IN", Arrays.asList(1, 2));
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T1_.ID not in (?, ?))", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(2, variables.length);
assertEquals(1, variables[0]);
assertEquals(2, variables[1]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(2, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
assertEquals(Integer.class, variableClasses[1]);
}
/**
*
*/
public void testPrepareCondition_NOT_IN_nest() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb");
Map<String, Object> w = new HashMap<String, Object>();
w.put("bbb.id_NOT_IN", new Object[] { 1, 2 });
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T2_.ID not in (?, ?))", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(2, variables.length);
assertEquals(1, variables[0]);
assertEquals(2, variables[1]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(2, variableClasses.length);
assertEquals(Integer.class, variableClasses[0]);
assertEquals(Integer.class, variableClasses[1]);
}
/**
*
*/
public void testPrepareCondition_LIKE() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("name_LIKE", "aaa");
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T1_.NAME like ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals("aaa", variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(String.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_LIKE_nest() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb");
Map<String, Object> w = new HashMap<String, Object>();
w.put("bbb.name_LIKE", "aaa");
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T2_.NAME like ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals("aaa", variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(String.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_STARTS() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("name_STARTS", "aaa");
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T1_.NAME like ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals("aaa%", variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(String.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_STARTS_nest() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb");
Map<String, Object> w = new HashMap<String, Object>();
w.put("bbb.name_STARTS", "aaa");
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T2_.NAME like ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals("aaa%", variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(String.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_ENDS() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("name_ENDS", "aaa");
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T1_.NAME like ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals("%aaa", variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(String.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_ENDS_nest() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb");
Map<String, Object> w = new HashMap<String, Object>();
w.put("bbb.name_ENDS", "aaa");
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T2_.NAME like ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals("%aaa", variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(String.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_CONTAINS() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("name_CONTAINS", "aaa");
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T1_.NAME like ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals("%aaa%", variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(String.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_CONTAINS_nest() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb");
Map<String, Object> w = new HashMap<String, Object>();
w.put("bbb.name_CONTAINS", "aaa");
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T2_.NAME like ?)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(1, variables.length);
assertEquals("%aaa%", variables[0]);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(1, variableClasses.length);
assertEquals(String.class, variableClasses[0]);
}
/**
*
*/
public void testPrepareCondition_IS_NULL() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("name_IS_NULL", true);
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T1_.NAME is null)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(0, variables.length);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(0, variableClasses.length);
}
/**
*
*/
public void testPrepareCondition_IS_NULL_nest() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb");
Map<String, Object> w = new HashMap<String, Object>();
w.put("bbb.name_IS_NULL", true);
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T2_.NAME is null)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(0, variables.length);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(0, variableClasses.length);
}
/**
*
*/
public void testPrepareCondition_IS_NOT_NULL() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("name_IS_NOT_NULL", true);
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T1_.NAME is not null)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(0, variables.length);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(0, variableClasses.length);
}
/**
*
*/
public void testPrepareCondition_IS_NOT_NULL_nest() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb");
Map<String, Object> w = new HashMap<String, Object>();
w.put("bbb.name_IS_NOT_NULL", true);
query.where(w);
query.prepare("getResultList");
assertEquals(" where (T2_.NAME is not null)", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(0, variables.length);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(0, variableClasses.length);
}
/**
*
*/
public void testPrepareCondition_columnNotFound() {
AutoSelectImpl<BadAaa> query = new AutoSelectImpl<BadAaa>(manager,
BadAaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("dummy", "hoge");
query.where(w);
try {
query.prepare("getResultList");
fail();
} catch (EntityColumnNotFoundRuntimeException e) {
System.out.println(e);
assertEquals("BadAaa", e.getEntityName());
assertEquals("dummy", e.getColumnName());
}
}
/**
*
*/
public void testPrepareCondition_empty() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
Map<String, Object> w = new HashMap<String, Object>();
w.put("id", null);
query.where(w);
query.prepare("getResultList");
assertEquals("", query.whereClause.toSql());
Object[] variables = query.getParamValues();
assertEquals(0, variables.length);
Class<?>[] variableClasses = query.getParamClasses();
assertEquals(0, variableClasses.length);
}
/**
*
*/
public void testPrepareSql() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.prepare("getResultList");
assertNotNull(query.executedSql);
}
/**
*
*/
public void testPrepareOrderBy() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb").orderBy("name, bbb.id desc");
query.prepare("getResultList");
assertEquals(" order by C2_, C5_ desc", query.orderByClause.toSql());
}
/**
*
*/
public void testPrepareOrderByItems() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb").orderBy(new OrderByItem("name"),
new OrderByItem("bbb.id", OrderingSpec.DESC));
assertEquals("name, bbb.id desc", query.orderBy);
query.prepare("getResultList");
assertEquals(" order by C2_, C5_ desc", query.orderByClause.toSql());
}
/**
*
*/
public void testPrepareOrderBy_sql() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb").orderBy("bbb.id desc");
query.prepare("getResultList");
assertEquals(
"select T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_, T1_.DTO as C4_, T2_.ID as C5_, T2_.NAME as C6_, T2_.CCC_ID as C7_ from AAA T1_ left outer join BBB T2_ on T1_.BBB_ID = T2_.ID order by C5_ desc",
query.toSql());
}
/**
*
*/
public void testPrepareCriteria() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb").where("bbb.id = ?", 1);
query.prepare("getResultList");
assertEquals(
"select T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_, T1_.DTO as C4_, T2_.ID as C5_, T2_.NAME as C6_, T2_.CCC_ID as C7_ from AAA T1_ left outer join BBB T2_ on T1_.BBB_ID = T2_.ID where (T2_.ID = ?)",
query.toSql());
}
/**
*
*/
public void testForUpdate() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.forUpdate();
query.prepare(null);
assertEquals(" for update", query.forUpdate);
assertEquals(" from AAA T1_", query.fromClause.toSql());
}
/**
*
*/
public void testForUpdate_join() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb").leftOuterJoin("bbb.ccc");
query.forUpdate();
query.prepare(null);
assertEquals(" for update", query.forUpdate);
assertEquals(" from AAA T1_"
+ " left outer join BBB T2_ on T1_.BBB_ID = T2_.ID"
+ " left outer join CCC T3_ on T2_.CCC_ID = T3_.ID",
query.fromClause.toSql());
}
/**
*
*/
public void testForUpdate_withLockHint() {
manager.setDialect(new MssqlDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.forUpdate();
query.prepare(null);
assertEquals("", query.forUpdate);
assertEquals(" from AAA T1_ with (updlock, rowlock)", query.fromClause
.toSql());
}
/**
*
*/
public void testForUpdate_withLockHint_join() {
manager.setDialect(new MssqlDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb").leftOuterJoin("bbb.ccc");
query.forUpdate();
query.prepare(null);
assertEquals("", query.forUpdate);
assertEquals(
" from AAA T1_ with (updlock, rowlock)"
+ " left outer join BBB T2_ with (updlock, rowlock) on T1_.BBB_ID = T2_.ID"
+ " left outer join CCC T3_ with (updlock, rowlock) on T2_.CCC_ID = T3_.ID",
query.fromClause.toSql());
}
/**
*
*/
public void testForUpdate_notSupported() {
manager.setDialect(new HsqlDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
try {
query.forUpdate();
fail();
} catch (UnsupportedOperationException expected) {
expected.printStackTrace();
}
}
/**
*
*/
public void testForUpdate_innerJoin_notSupported() {
manager.setDialect(new Db2Dialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
try {
query.innerJoin("bbb").forUpdate();
query.prepare(null);
fail();
} catch (UnsupportedOperationException expected) {
expected.printStackTrace();
}
}
/**
*
*/
public void testForUpdate_outerJoin_notSupported() {
manager.setDialect(new PostgreDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
try {
query.leftOuterJoin("bbb").forUpdate();
query.prepare(null);
fail();
} catch (UnsupportedOperationException expected) {
expected.printStackTrace();
}
}
/**
*
*/
public void testForUpdate_withPaging() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
try {
query.forUpdate();
query.offset(10).limit(10);
query.prepare(null);
fail();
} catch (UnsupportedOperationException expected) {
expected.printStackTrace();
}
}
/**
*
*/
public void testForUpdateWithProperty_columnAlias() {
manager.setDialect(new OracleDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.forUpdate("name");
query.prepare(null);
assertEquals(" for update of T1_.NAME", query.forUpdate);
assertEquals(" from AAA T1_", query.fromClause.toSql());
}
/**
*
*/
public void testForUpdateWithProperty_columnAlias_join() {
manager.setDialect(new OracleDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb").leftOuterJoin("bbb.ccc");
query.forUpdate("name", "bbb.ccc.name");
query.prepare(null);
assertEquals(" for update of T1_.NAME, T3_.NAME", query.forUpdate);
assertEquals(" from AAA T1_"
+ " left outer join BBB T2_ on T1_.BBB_ID = T2_.ID"
+ " left outer join CCC T3_ on T2_.CCC_ID = T3_.ID",
query.fromClause.toSql());
}
/**
*
*/
public void testForUpdateWithProperty_tableAlias() {
manager.setDialect(new PostgreDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.forUpdate("name");
query.prepare(null);
assertEquals(" for update of T1_", query.forUpdate);
assertEquals(" from AAA T1_", query.fromClause.toSql());
}
/**
*
*/
public void testForUpdateWithProperty_tableAlias_join() {
manager.setDialect(new PostgreDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.join("bbb", JoinType.INNER).join("bbb.ccc", JoinType.INNER);
query.forUpdate("name", "bbb.ccc.name");
query.prepare(null);
assertEquals(" for update of T1_, T3_", query.forUpdate);
assertEquals(" from AAA T1_"
+ " inner join BBB T2_ on T1_.BBB_ID = T2_.ID"
+ " inner join CCC T3_ on T2_.CCC_ID = T3_.ID",
query.fromClause.toSql());
}
/**
*
*/
public void testForUpdateWithProperty_lockHint() {
manager.setDialect(new MssqlDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.forUpdate("name");
query.prepare(null);
assertEquals("", query.forUpdate);
assertEquals(" from AAA T1_ with (updlock, rowlock)", query.fromClause
.toSql());
}
/**
*
*/
public void testForUpdateWithProperty_lockHint_join() {
manager.setDialect(new MssqlDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb").leftOuterJoin("bbb.ccc");
query.forUpdate("name", "bbb.ccc.name");
query.prepare(null);
assertEquals("", query.forUpdate);
assertEquals(
" from AAA T1_ with (updlock, rowlock)"
+ " left outer join BBB T2_ on T1_.BBB_ID = T2_.ID"
+ " left outer join CCC T3_ with (updlock, rowlock) on T2_.CCC_ID = T3_.ID",
query.fromClause.toSql());
}
/**
*
*/
public void testForUpdateWithProperty_notSupported() {
manager.setDialect(new HsqlDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
try {
query.forUpdate("name");
fail();
} catch (UnsupportedOperationException expected) {
expected.printStackTrace();
}
}
/**
*
*/
public void testForUpdateWithProperty_join_notSupported() {
manager.setDialect(new PostgreDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
try {
query.leftOuterJoin("bbb").leftOuterJoin("bbb.ccc");
query.forUpdate("name", "bbb.ccc.name");
query.prepare(null);
fail();
} catch (UnsupportedOperationException expected) {
expected.printStackTrace();
}
}
/**
*
*/
public void testForUpdateWithProperty_invalidProperty() {
manager.setDialect(new OracleDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
try {
query.forUpdate("hogehoge");
query.prepare(null);
fail();
} catch (PropertyNotFoundRuntimeException expected) {
expected.printStackTrace();
}
}
/**
*
*/
public void testForUpdateWithProperty_invalidRelationship() {
manager.setDialect(new OracleDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
try {
query.leftOuterJoin("bbb");
query.forUpdate("bbb");
query.prepare(null);
fail();
} catch (PropertyNotFoundRuntimeException expected) {
expected.printStackTrace();
}
}
/**
*
*/
public void testForUpdateWithProperty_invalidJoin() {
manager.setDialect(new OracleDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
try {
query.leftOuterJoin("bbb");
query.forUpdate("ccc.hogehoge");
query.prepare(null);
fail();
} catch (BaseJoinNotFoundRuntimeException expected) {
expected.printStackTrace();
}
}
/**
*
*/
public void testForUpdateNowait() {
manager.setDialect(new OracleDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.forUpdateNowait();
query.prepare(null);
assertEquals(" for update nowait", query.forUpdate);
}
/**
*
*/
public void testForUpdateNowait_lockHint() {
manager.setDialect(new MssqlDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.forUpdateNowait();
query.prepare(null);
assertEquals("", query.forUpdate);
assertEquals(" from AAA T1_ with (updlock, rowlock, nowait)",
query.fromClause.toSql());
}
/**
*
*/
public void testForUpdateNowait_notSupported() {
manager.setDialect(new HsqlDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
try {
query.forUpdateNowait();
fail();
} catch (UnsupportedOperationException expected) {
expected.printStackTrace();
}
}
/**
*
*/
public void testForUpdateNowaitWithProperty() {
manager.setDialect(new OracleDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.forUpdateNowait("name");
query.prepare(null);
assertEquals(" for update of T1_.NAME nowait", query.forUpdate);
}
/**
*
*/
public void testForUpdateNowaitWithProperty_lockHint() {
manager.setDialect(new MssqlDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.forUpdateNowait("name");
query.prepare(null);
assertEquals("", query.forUpdate);
assertEquals(" from AAA T1_ with (updlock, rowlock, nowait)",
query.fromClause.toSql());
}
/**
*
*/
public void testForUpdateNowaitWithProperty_notSupported() {
manager.setDialect(new HsqlDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
try {
query.forUpdateNowait("name");
fail();
} catch (UnsupportedOperationException expected) {
expected.printStackTrace();
}
}
/**
*
*/
public void testForUpdateWait() {
manager.setDialect(new OracleDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.forUpdateWait(10);
query.prepare(null);
assertEquals(" for update wait 10", query.forUpdate);
}
/**
*
*/
public void testForUpdateWait_notSupported() {
manager.setDialect(new HsqlDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
try {
query.forUpdateWait(10);
fail();
} catch (UnsupportedOperationException expected) {
expected.printStackTrace();
}
}
/**
*
*/
public void testForUpdateWaitWithProperty() {
manager.setDialect(new OracleDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.forUpdateWait(10, "name");
query.prepare(null);
assertEquals(" for update of T1_.NAME wait 10", query.forUpdate);
}
/**
*
*/
public void testForUpdateWaitWithProperty_notSupported() {
manager.setDialect(new HsqlDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
try {
query.forUpdateWait(10, "name");
fail();
} catch (UnsupportedOperationException expected) {
expected.printStackTrace();
}
}
/**
*
*/
public void testForUpdateSql() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb").orderBy("bbb.id desc").forUpdate();
query.prepare("getResultList");
assertEquals(
"select T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_, T1_.DTO as C4_, T2_.ID as C5_, T2_.NAME as C6_, T2_.CCC_ID as C7_ "
+ "from AAA T1_ "
+ "left outer join BBB T2_ on T1_.BBB_ID = T2_.ID "
+ "order by C5_ desc " + "for update",
query.executedSql);
}
/**
*
*/
public void testForUpdateSql_lockHint() {
manager.setDialect(new MssqlDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb").orderBy("bbb.id desc").forUpdate();
query.prepare("getResultList");
assertEquals(
"select T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_, T1_.DTO as C4_, T2_.ID as C5_, T2_.NAME as C6_, T2_.CCC_ID as C7_ "
+ "from AAA T1_ with (updlock, rowlock) "
+ "left outer join BBB T2_ with (updlock, rowlock) on T1_.BBB_ID = T2_.ID "
+ "order by C5_ desc", query.executedSql);
}
/**
*
*/
public void testEagerSql() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.eager("lazyName");
query.prepare("getResultList");
assertEquals(
"select T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_, T1_.DTO as C4_, T1_.LAZY_NAME as C5_ "
+ "from AAA T1_", query.executedSql);
}
/**
*
*/
public void testEagerSql_withJoin() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb").eager("bbb.lazyName");
query.prepare("getResultList");
assertEquals(
"select T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_, T1_.DTO as C4_, "
+ "T2_.ID as C5_, T2_.NAME as C6_, T2_.CCC_ID as C7_, T2_.LAZY_NAME as C8_ "
+ "from AAA T1_ left outer join BBB T2_ on T1_.BBB_ID = T2_.ID",
query.executedSql);
}
/**
*
*/
public void testHint() {
manager.setDialect(new OracleDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.hint("index(Aaa index)");
query.prepare("getResultList");
assertEquals(
"select /*+ index(T1_ index) */ T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_, T1_.DTO as C4_ "
+ "from AAA T1_", query.executedSql);
}
/**
*
*/
public void testHint_notSupport() {
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.hint("index(Aaa index)");
query.prepare("getResultList");
assertEquals(
"select T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_, T1_.DTO as C4_ "
+ "from AAA T1_", query.executedSql);
}
/**
*
*/
public void testHint_withJoin() {
manager.setDialect(new OracleDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb", false);
query.hint("index(bbb index)");
query.prepare("getResultList");
assertEquals(
"select /*+ index(T2_ index) */ T1_.ID as C1_, T1_.NAME as C2_, T1_.BBB_ID as C3_, T1_.DTO as C4_ "
+ "from AAA T1_ left outer join BBB T2_ on T1_.BBB_ID = T2_.ID",
query.executedSql);
}
/**
*
*/
public void testConvertEntityNameToTableAlias() {
manager.setDialect(new OracleDialect());
AutoSelectImpl<Aaa> query = new AutoSelectImpl<Aaa>(manager, Aaa.class);
query.leftOuterJoin("bbb").leftOuterJoin("bbb.ddds");
query.prepare("getResultList");
assertEquals("T1_", query.convertEntityNameToTableAlias("Aaa"));
assertEquals("T2_", query.convertEntityNameToTableAlias("bbb"));
assertEquals("T3_", query.convertEntityNameToTableAlias("bbb.ddds"));
}
/**
*
*/
public void testCompleted_getResultList() {
AutoSelectImplDummy<Aaa> query = new AutoSelectImplDummy<Aaa>(manager,
Aaa.class);
query.getResultList();
try {
query.getResultList();
fail();
} catch (QueryTwiceExecutionRuntimeException expected) {
}
}
/**
*
*/
public void testCompleted_getSingleResult() {
AutoSelectImplDummy<Aaa> query = new AutoSelectImplDummy<Aaa>(manager,
Aaa.class);
query.getSingleResult();
try {
query.getSingleResult();
fail();
} catch (QueryTwiceExecutionRuntimeException expected) {
}
}
/**
*
*/
public void testCompleted_getCount() {
AutoSelectImplDummy<Aaa> query = new AutoSelectImplDummy<Aaa>(manager,
Aaa.class);
query.getCount();
try {
query.getCount();
fail();
} catch (QueryTwiceExecutionRuntimeException expected) {
}
}
/**
*
*/
class AutoSelectImplDummy<E> extends AutoSelectImpl<E> {
/**
* @param jdbcManager
* @param baseClass
*/
public AutoSelectImplDummy(JdbcManagerImplementor jdbcManager,
Class<E> baseClass) {
super(jdbcManager, baseClass);
}
@Override
protected List<E> getResultListInternal() {
return Collections.emptyList();
}
@Override
protected E getSingleResultInternal() {
return null;
}
@Override
public long getCount() {
try {
return super.getCount();
} catch (NullPointerException e) {
return 0;
}
}
}
@Entity
private static class MyAaa {
/**
*
*/
public Integer id;
/**
*
*/
@Lob
public String largeName;
/**
*
*/
@Lob
@Basic(fetch = FetchType.LAZY)
public String lazyName;
}
@Entity(name = "BadAaa")
private static class BadAaa {
/**
*
*/
@Id
public Integer id;
/**
*
*/
public Integer bbbId;
/**
*
*/
@OneToOne
public BadBbb bbb;
/**
*
*/
@Transient
public String dummy;
}
@Entity(name = "BadBbb")
private static class BadBbb {
/**
*
*/
@Id
public Integer id;
/**
*
*/
@OneToOne
public BadCcc ccc;
}
@Entity
private static class BadCcc {
}
}