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);
+
 }


Reply via email to