You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by cb...@apache.org on 2009/12/05 23:39:30 UTC
svn commit: r887603 - in /ibatis/java/ibatis-3/trunk/ibatis-3-core/src:
main/java/org/apache/ibatis/executor/
test/java/org/apache/ibatis/submitted/cglib_lazy_error/
Author: cbegin
Date: Sat Dec 5 22:39:30 2009
New Revision: 887603
URL: http://svn.apache.org/viewvc?rev=887603&view=rev
Log:
ibatis-687 Exception while fetching data after insert, in the same transaction
Modified:
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.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/Person.xml
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/PersonMapper.java
Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java?rev=887603&r1=887602&r2=887603&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java Sat Dec 5 22:39:30 2009
@@ -202,9 +202,9 @@
Object array = java.lang.reflect.Array.newInstance(targetType.getComponentType(), list.size());
value = list.toArray((Object[]) array);
} else {
- if (list.size() > 1) {
+ if (list != null && list.size() > 1) {
throw new ExecutorException("Statement returned more than one row, where no more than one was expected.");
- } else if (list.size() == 1) {
+ } else if (list != null && list.size() == 1) {
value = list.get(0);
}
}
Modified: 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=887603&r1=887602&r2=887603&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPETest.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPETest.java Sat Dec 5 22:39:30 2009
@@ -96,4 +96,30 @@
Assert.assertNotNull("Grandparent must not be null", person.getParent().getParent());
Assert.assertEquals("Ancestor must be John Smith sr.", expectedAncestor, person.getAncestor());
}
+
+ @Test
+ public void testInsertBetweenTwoSelects() {
+ SqlSession sqlSession = sqlSessionFactory.openSession();
+ try {
+ PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
+ Person selected1 = personMapper.selectById(1);
+ Person selected2 = personMapper.selectById(2);
+ Person selected3 = personMapper.selectById(3);
+ selected1.setId(4L);
+ int rows = personMapper.insertPerson(selected1);
+ Assert.assertEquals(1,rows);
+ selected1 = personMapper.selectById(1);
+ selected2 = personMapper.selectById(2);
+ selected3 = personMapper.selectById(3);
+ Person selected4 = personMapper.selectById(4);
+ Assert.assertEquals(1,selected1.getId());
+ Assert.assertEquals(2,selected2.getId());
+ Assert.assertEquals(3,selected3.getId());
+ Assert.assertEquals(4,selected4.getId());
+
+ } finally {
+ sqlSession.close();
+ }
+ }
+
}
Modified: 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=887603&r1=887602&r2=887603&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.xml (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.xml Sat Dec 5 22:39:30 2009
@@ -26,5 +26,10 @@
FROM Person
WHERE id = #{id,jdbcType=INTEGER}
</select>
+
+ <insert id="insertPerson">
+ INSERT INTO person (id, firstName, lastName, parent)
+ VALUES (#{id}, #{firstName}, #{lastName}, null);
+ </insert>
</mapper>
Modified: 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=887603&r1=887602&r2=887603&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/PersonMapper.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/PersonMapper.java Sat Dec 5 22:39:30 2009
@@ -3,5 +3,6 @@
public interface PersonMapper {
public Person selectById(int id);
-
+ public int insertPerson (Person person);
+
}