Author: cbegin Date: Mon Nov 30 03:40:03 2009 New Revision: 885327 URL: http://svn.apache.org/viewvc?rev=885327&view=rev Log: IBATIS-688 Problem with lazy loading
Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPELazyTest.java ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPETest.java ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CreateDB.sql ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.java ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.xml ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/PersonMapper.java ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfig.xml ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfigLazy.xml Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/ReuseExecutor.java ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoader.java ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoaderRegistry.java ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultObjectProxy.java ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ReuseExecutorTest.java Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/ReuseExecutor.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/ReuseExecutor.java?rev=885327&r1=885326&r2=885327&view=diff ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/ReuseExecutor.java (original) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/ReuseExecutor.java Mon Nov 30 03:40:03 2009 @@ -64,7 +64,11 @@ } private boolean hasStatementFor(String sql) { - return statementMap.keySet().contains(sql); + try { + return statementMap.keySet().contains(sql) && !statementMap.get(sql).getConnection().isClosed(); + } catch (SQLException e) { + return false; + } } private Statement getStatement(String s) { Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoader.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoader.java?rev=885327&r1=885326&r2=885327&view=diff ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoader.java (original) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoader.java Mon Nov 30 03:40:03 2009 @@ -72,7 +72,7 @@ try { return localExecutor.query(mappedStatement, parameterObject, RowBounds.DEFAULT, Executor.NO_RESULT_HANDLER); } finally { - if (executor.isClosed()) { + if (localExecutor != executor) { localExecutor.close(); } } Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoaderRegistry.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoaderRegistry.java?rev=885327&r1=885326&r2=885327&view=diff ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoaderRegistry.java (original) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoaderRegistry.java Mon Nov 30 03:40:03 2009 @@ -18,16 +18,17 @@ loaderMap.put(toSetter(upperFirst), new LoadPair(property, metaResultObject, resultLoader)); } - public boolean loadByMethod(String methodName) throws SQLException { - synchronized (loaderMap) { - ResultLoaderRegistry.LoadPair pair = loaderMap.remove(methodName.toUpperCase()); - if (pair != null) { - pair.load(); - return true; + public void loadAll() throws SQLException { + synchronized (loaderMap) { + Object[] keys = loaderMap.keySet().toArray(); + for (Object key : keys) { + LoadPair pair = loaderMap.remove(key); + if (pair != null) { + pair.load(); + } + } } - return false; } - } private String toGetter(String first) { return "GET" + first; Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultObjectProxy.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultObjectProxy.java?rev=885327&r1=885326&r2=885327&view=diff ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultObjectProxy.java (original) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultObjectProxy.java Mon Nov 30 03:40:03 2009 @@ -37,16 +37,10 @@ public Object invoke(Object o, Method method, Object[] args) throws Throwable { try { - Object value = method.invoke(target, args); - if (value == null) { - String methodName = method.getName(); - if (PropertyNamer.isGetter(methodName)) { - if (lazyLoader.loadByMethod(methodName)) { - value = method.invoke(target, args); - } - } + if (!Object.class.equals(method.getDeclaringClass()) && PropertyNamer.isGetter(method.getName())) { + lazyLoader.loadAll(); } - return value; + return method.invoke(target, args); } catch (Throwable t) { throw ExceptionUtil.unwrapThrowable(t); } Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ReuseExecutorTest.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ReuseExecutorTest.java?rev=885327&r1=885326&r2=885327&view=diff ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ReuseExecutorTest.java (original) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ReuseExecutorTest.java Mon Nov 30 03:40:03 2009 @@ -9,6 +9,11 @@ public void dummy() { } + @Test + public void shouldFetchPostWithBlogWithCompositeKey() throws Exception { + super.shouldFetchPostWithBlogWithCompositeKey(); + } + protected Executor createExecutor(Transaction transaction) { return new ReuseExecutor(transaction); } Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPELazyTest.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPELazyTest.java?rev=885327&view=auto ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPELazyTest.java (added) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPELazyTest.java Mon Nov 30 03:40:03 2009 @@ -0,0 +1,99 @@ +package org.apache.ibatis.submitted.cglib_lazy_error; + +import java.io.PrintWriter; +import java.io.Reader; +import java.sql.Connection; +import java.sql.DriverManager; + +import org.apache.ibatis.io.Resources; +import org.apache.ibatis.jdbc.ScriptRunner; +import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactory; +import org.apache.ibatis.session.SqlSessionFactoryBuilder; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +public class CglibNPELazyTest { + + private static SqlSessionFactory sqlSessionFactory; + + @BeforeClass + public static void initDatabase() throws Exception { + Connection conn = null; + + try { + Class.forName("org.hsqldb.jdbcDriver"); + conn = DriverManager.getConnection("jdbc:hsqldb:mem:cglib_lazy_error", "sa", + ""); + + Reader reader = Resources.getResourceAsReader("org/apache/ibatis/submitted/cglib_lazy_error/CreateDB.sql"); + + ScriptRunner runner = new ScriptRunner(conn); + runner.setLogWriter(null); + runner.setErrorLogWriter(new PrintWriter(System.err)); + runner.runScript(reader); + conn.commit(); + reader.close(); + + reader = Resources.getResourceAsReader("org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfigLazy.xml"); + sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); + reader.close(); + } finally { + if (conn != null) { + conn.close(); + } + } + } + + @Test + public void testNoParent() { + SqlSession sqlSession = sqlSessionFactory.openSession(); + PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class); + Person person = personMapper.selectById(1); + Assert.assertNotNull("Persons must not be null", person); + Person parent = person.getParent(); + Assert.assertNull("Parent must be null", parent); + } + @Test + public void testAncestorSelf() { + SqlSession sqlSession = sqlSessionFactory.openSession(); + PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class); + Person person = personMapper.selectById(1); + Assert.assertNotNull("Persons must not be null", person); + Person ancestor = person.getAncestor(); + Assert.assertEquals("Ancestor must be John Smith sr.", person, ancestor); + } + @Test + public void testGrandParent() { + SqlSession sqlSession = sqlSessionFactory.openSession(); + PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class); + Person expectedParent = personMapper.selectById(2); + Person expectedGrandParent = personMapper.selectById(1); + Person person = personMapper.selectById(3); + Assert.assertNotNull("Persons must not be null", person); + Assert.assertEquals("Parent must be John Smith", expectedParent, person.getParent()); + Assert.assertEquals("Parent must be John Smith sr.", expectedGrandParent, person.getParent().getParent()); + } + @Test + public void testAncestor() { + SqlSession sqlSession = sqlSessionFactory.openSession(); + PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class); + Person expectedAncestor = personMapper.selectById(1); + Person person = personMapper.selectById(3); + Assert.assertNotNull("Persons must not be null", person); + Assert.assertEquals("Ancestor must be John Smith sr.", expectedAncestor, person.getAncestor()); + } + @Test + public void testAncestorAfterQueryingParents() { + SqlSession sqlSession = sqlSessionFactory.openSession(); + PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class); + Person expectedAncestor = personMapper.selectById(1); + Person person = personMapper.selectById(3); + // Load ancestor indirectly. + Assert.assertNotNull("Persons must not be null", person); + Assert.assertNotNull("Parent must not be null", person.getParent()); + Assert.assertNotNull("Grandparent must not be null", person.getParent().getParent()); + Assert.assertEquals("Ancestor must be John Smith sr.", expectedAncestor, person.getAncestor()); + } +} Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPETest.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPETest.java?rev=885327&view=auto ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPETest.java (added) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPETest.java Mon Nov 30 03:40:03 2009 @@ -0,0 +1,99 @@ +package org.apache.ibatis.submitted.cglib_lazy_error; + +import java.io.PrintWriter; +import java.io.Reader; +import java.sql.Connection; +import java.sql.DriverManager; + +import org.apache.ibatis.io.Resources; +import org.apache.ibatis.jdbc.ScriptRunner; +import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactory; +import org.apache.ibatis.session.SqlSessionFactoryBuilder; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +public class CglibNPETest { + + private static SqlSessionFactory sqlSessionFactory; + + @BeforeClass + public static void initDatabase() throws Exception { + Connection conn = null; + + try { + Class.forName("org.hsqldb.jdbcDriver"); + conn = DriverManager.getConnection("jdbc:hsqldb:mem:cglib_lazy_eager_no_error", "sa", + ""); + + Reader reader = Resources.getResourceAsReader("org/apache/ibatis/submitted/cglib_lazy_error/CreateDB.sql"); + + ScriptRunner runner = new ScriptRunner(conn); + runner.setLogWriter(null); + runner.setErrorLogWriter(new PrintWriter(System.err)); + runner.runScript(reader); + conn.commit(); + reader.close(); + + reader = Resources.getResourceAsReader("org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfig.xml"); + sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); + reader.close(); + } finally { + if (conn != null) { + conn.close(); + } + } + } + + @Test + public void testNoParent() { + SqlSession sqlSession = sqlSessionFactory.openSession(); + PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class); + Person person = personMapper.selectById(1); + Assert.assertNotNull("Persons must not be null", person); + Person parent = person.getParent(); + Assert.assertNull("Parent must be null", parent); + } + @Test + public void testAncestorSelf() { + SqlSession sqlSession = sqlSessionFactory.openSession(); + PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class); + Person person = personMapper.selectById(1); + Assert.assertNotNull("Persons must not be null", person); + Person ancestor = person.getAncestor(); + Assert.assertEquals("Ancestor must be John Smith sr.", person, ancestor); + } + @Test + public void testGrandParent() { + SqlSession sqlSession = sqlSessionFactory.openSession(); + PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class); + Person expectedParent = personMapper.selectById(2); + Person expectedGrandParent = personMapper.selectById(1); + Person person = personMapper.selectById(3); + Assert.assertNotNull("Persons must not be null", person); + Assert.assertEquals("Parent must be John Smith", expectedParent, person.getParent()); + Assert.assertEquals("Parent must be John Smith sr.", expectedGrandParent, person.getParent().getParent()); + } + @Test + public void testAncestor() { + SqlSession sqlSession = sqlSessionFactory.openSession(); + PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class); + Person expectedAncestor = personMapper.selectById(1); + Person person = personMapper.selectById(3); + Assert.assertNotNull("Persons must not be null", person); + Assert.assertEquals("Ancestor must be John Smith sr.", expectedAncestor, person.getAncestor()); + } + @Test + public void testAncestorAfterQueryingParents() { + SqlSession sqlSession = sqlSessionFactory.openSession(); + PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class); + Person expectedAncestor = personMapper.selectById(1); + Person person = personMapper.selectById(3); + // Load ancestor indirectly. + Assert.assertNotNull("Persons must not be null", person); + Assert.assertNotNull("Parent must not be null", person.getParent()); + Assert.assertNotNull("Grandparent must not be null", person.getParent().getParent()); + Assert.assertEquals("Ancestor must be John Smith sr.", expectedAncestor, person.getAncestor()); + } +} Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CreateDB.sql URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CreateDB.sql?rev=885327&view=auto ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CreateDB.sql (added) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CreateDB.sql Mon Nov 30 03:40:03 2009 @@ -0,0 +1,13 @@ +create table person ( + id int, + firstName varchar(100), + lastName varchar(100), + parent int DEFAULT NULL +); + +INSERT INTO person (id, firstName, lastName, parent) +VALUES (1, 'John sr.', 'Smith', null); +INSERT INTO person (id, firstName, lastName, parent) +VALUES (2, 'John', 'Smith', 1); +INSERT INTO person (id, firstName, lastName, parent) +VALUES (3, 'John jr.', 'Smith', 2); Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.java?rev=885327&view=auto ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.java (added) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.java Mon Nov 30 03:40:03 2009 @@ -0,0 +1,58 @@ +package org.apache.ibatis.submitted.cglib_lazy_error; + +public class Person { + + private Long id; + private String firstName; + private String lastName; + private Person parent; + public Person getAncestor() { + if (getParent() == null) { + return this; + } else { + return getParent().getAncestor(); + } + } + + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj instanceof Person) { + return this.getId() == ((Person) obj).getId(); + } + return false; + } + @Override + public int hashCode() { + return id != null ? id.intValue() : null; + } + + + public String getFirstName() { + return firstName; + } + public void setFirstName(String firstName) { + this.firstName = firstName; + } + public String getLastName() { + return lastName; + } + public void setLastName(String lastName) { + this.lastName = lastName; + } + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public Person getParent() { + return parent; + } + public void setParent(Person parent) { + this.parent = parent; + } +} Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.xml URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.xml?rev=885327&view=auto ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.xml (added) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.xml Mon Nov 30 03:40:03 2009 @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE mapper + PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" + "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> + +<mapper namespace="org.apache.ibatis.submitted.cglib_lazy_error.PersonMapper"> + + <resultMap id="personMap" type="Person"> + <id property="id" column="Person_id"/> + <result property="firstName" column="Person_firstName"/> + <result property="lastName" column="Person_lastName"/> + <association property="parent" column="Person_parent" select="org.apache.ibatis.submitted.cglib_lazy_error.PersonMapper.selectById"/> + </resultMap> + + + <sql id="columns"> + Person.id AS Person_id, + Person.firstName AS Person_firstName, + Person.lastName AS Person_lastName, + Person.parent AS Person_parent + </sql> + + + <select id="selectById" resultMap="personMap" parameterType="int"> + SELECT <include refid="columns"/> + FROM Person + WHERE id = #{id,jdbcType=INTEGER} + </select> + +</mapper> Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/PersonMapper.java URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/PersonMapper.java?rev=885327&view=auto ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/PersonMapper.java (added) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/PersonMapper.java Mon Nov 30 03:40:03 2009 @@ -0,0 +1,7 @@ +package org.apache.ibatis.submitted.cglib_lazy_error; + +public interface PersonMapper { + + public Person selectById(int id); + +} Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfig.xml URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfig.xml?rev=885327&view=auto ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfig.xml (added) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfig.xml Mon Nov 30 03:40:03 2009 @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE configuration + PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" + "http://ibatis.apache.org/dtd/ibatis-3-config.dtd"> + +<configuration> + <typeAliases> + <typeAlias alias="Person" type="org.apache.ibatis.submitted.cglib_lazy_error.Person"/> + </typeAliases> + + <environments default="test"> + <environment id="test"> + <transactionManager type="JDBC"></transactionManager> + <dataSource type="UNPOOLED"> + <property name="driver" value="org.hsqldb.jdbcDriver"/> + <property name="url" value="jdbc:hsqldb:mem:cglib_lazy_eager_no_error"/> + <property name="username" value="sa"/> + </dataSource> + </environment> + </environments> + + <mappers> + <mapper resource="org/apache/ibatis/submitted/cglib_lazy_error/Person.xml"/> + </mappers> +</configuration> Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfigLazy.xml URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfigLazy.xml?rev=885327&view=auto ============================================================================== --- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfigLazy.xml (added) +++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfigLazy.xml Mon Nov 30 03:40:03 2009 @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE configuration + PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" + "http://ibatis.apache.org/dtd/ibatis-3-config.dtd"> + +<configuration> + <settings> + <setting name="lazyLoadingEnabled" value="true"/> + </settings> + + <typeAliases> + <typeAlias alias="Person" type="org.apache.ibatis.submitted.cglib_lazy_error.Person"/> + </typeAliases> + + <environments default="test"> + <environment id="test"> + <transactionManager type="JDBC"></transactionManager> + <dataSource type="UNPOOLED"> + <property name="driver" value="org.hsqldb.jdbcDriver"/> + <property name="url" value="jdbc:hsqldb:mem:cglib_lazy_error"/> + <property name="username" value="sa"/> + </dataSource> + </environment> + </environments> + + <mappers> + <mapper resource="org/apache/ibatis/submitted/cglib_lazy_error/Person.xml"/> + </mappers> +</configuration>