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>