INT-3029 JPA: Support Iterables for Persist/Merge

* Add test cases
* Add documentation

Jira: https://jira.springsource.org/browse/INT-3029

INT-3029 Update copyright year

Doc Polishing
This commit is contained in:
Gunnar Hillert
2013-09-17 10:52:05 -04:00
committed by Gary Russell
parent 772a01be79
commit bbf93e1385
8 changed files with 386 additions and 11 deletions

View File

@@ -24,7 +24,6 @@ import java.util.List;
import javax.persistence.EntityManager;
import org.junit.Assert;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.integration.jpa.support.parametersource.ExpressionEvaluatingParameterSourceFactory;
@@ -234,6 +233,92 @@ public class AbstractJpaOperationsTests {
Assert.assertTrue(student != savedStudent);
}
public void testMergeCollection() {
final JpaOperations jpaOperations = getJpaOperations(entityManager);
final StudentDomain student1 = JpaTestUtils.getTestStudent();
final StudentDomain student2 = JpaTestUtils.getTestStudent();
final StudentDomain student3 = JpaTestUtils.getTestStudent();
student1.setFirstName("Karl");
student2.setFirstName("Otto");
student3.setFirstName("Wilhelm");
List<StudentDomain> students = new ArrayList<StudentDomain>(3);
students.add(student1);
students.add(student2);
students.add(student3);
Assert.assertNull(student1.getRollNumber());
Assert.assertNull(student2.getRollNumber());
Assert.assertNull(student3.getRollNumber());
Object savedStudents = jpaOperations.merge(students);
entityManager.flush();
Assert.assertTrue(savedStudents instanceof List<?>);
@SuppressWarnings("unchecked")
List<StudentDomain> savedStudentCollection = (List<StudentDomain>) savedStudents;
Assert.assertNotNull(savedStudentCollection.get(0).getRollNumber());
Assert.assertNotNull(savedStudentCollection.get(1).getRollNumber());
Assert.assertNotNull(savedStudentCollection.get(2).getRollNumber());
}
public void testMergeNullCollection() {
final JpaOperations jpaOperations = getJpaOperations(entityManager);
try {
jpaOperations.merge(null);
}
catch (IllegalArgumentException e) {
Assert.assertEquals("The object to merge must not be null.", e.getMessage());
return;
}
Assert.fail("Expected an IllegalArgumentException to be thrown.");
}
public void testMergeCollectionWithNullElement() {
final JpaOperations jpaOperations = getJpaOperations(entityManager);
final List<?> studentsFromDbBeforeTest = jpaOperations.getResultListForClass(StudentDomain.class, 0);
Assert.assertEquals(3, studentsFromDbBeforeTest.size());
final StudentDomain student1 = JpaTestUtils.getTestStudent();
final StudentDomain student2 = null;
final StudentDomain student3 = JpaTestUtils.getTestStudent();
student1.setFirstName("Karl");
student3.setFirstName("Wilhelm");
List<StudentDomain> students = new ArrayList<StudentDomain>(3);
students.add(student1);
students.add(student2);
students.add(student3);
Assert.assertNull(student1.getRollNumber());
Assert.assertNull(student2);
Assert.assertNull(student3.getRollNumber());
Object savedStudents = jpaOperations.merge(students);
entityManager.flush();
Assert.assertTrue(savedStudents instanceof List<?>);
@SuppressWarnings("unchecked")
List<StudentDomain> savedStudentCollection = (List<StudentDomain>) savedStudents;
Assert.assertNotNull(savedStudentCollection.get(0).getRollNumber());
Assert.assertNotNull(savedStudentCollection.get(1).getRollNumber());
}
/**
* Test method for {@link org.springframework.integration.jpa.core.DefaultJpaOperations#persist(java.lang.Object)}.
*/
@@ -248,6 +333,83 @@ public class AbstractJpaOperationsTests {
Assert.assertNotNull(student.getRollNumber());
}
public void testPersistCollection() {
final JpaOperations jpaOperations = getJpaOperations(entityManager);
final StudentDomain student1 = JpaTestUtils.getTestStudent();
final StudentDomain student2 = JpaTestUtils.getTestStudent();
final StudentDomain student3 = JpaTestUtils.getTestStudent();
student1.setFirstName("Karl");
student2.setFirstName("Otto");
student3.setFirstName("Wilhelm");
List<StudentDomain> students = new ArrayList<StudentDomain>(3);
students.add(student1);
students.add(student2);
students.add(student3);
Assert.assertNull(student1.getRollNumber());
Assert.assertNull(student2.getRollNumber());
Assert.assertNull(student3.getRollNumber());
jpaOperations.persist(students);
entityManager.flush();
Assert.assertNotNull(student1.getRollNumber());
Assert.assertNotNull(student2.getRollNumber());
Assert.assertNotNull(student3.getRollNumber());
}
public void testPersistNullCollection() {
final JpaOperations jpaOperations = getJpaOperations(entityManager);
try {
jpaOperations.persist(null);
}
catch (IllegalArgumentException e) {
Assert.assertEquals("The object to persist must not be null.", e.getMessage());
return;
}
Assert.fail("Expected an IllegalArgumentException to be thrown.");
}
public void testPersistCollectionWithNullElement() {
final JpaOperations jpaOperations = getJpaOperations(entityManager);
final List<?> studentsFromDbBeforeTest = jpaOperations.getResultListForClass(StudentDomain.class, 0);
Assert.assertEquals(3, studentsFromDbBeforeTest.size());
final StudentDomain student1 = JpaTestUtils.getTestStudent();
final StudentDomain student2 = null;
final StudentDomain student3 = JpaTestUtils.getTestStudent();
student1.setFirstName("Karl");
student3.setFirstName("Wilhelm");
List<StudentDomain> students = new ArrayList<StudentDomain>(3);
students.add(student1);
students.add(student2);
students.add(student3);
Assert.assertNull(student1.getRollNumber());
Assert.assertNull(student2);
Assert.assertNull(student3.getRollNumber());
jpaOperations.persist(students);
entityManager.flush();
Assert.assertNotNull(student1.getRollNumber());
Assert.assertNotNull(student3.getRollNumber());
final List<?> studentsFromDb = jpaOperations.getResultListForClass(StudentDomain.class, 0);
Assert.assertNotNull(studentsFromDb);
Assert.assertEquals(5, studentsFromDb.size());
}
public void testDeleteInBatch() {
final JpaOperations jpaOperations = getJpaOperations(entityManager);

View File

@@ -15,7 +15,6 @@ package org.springframework.integration.jpa.core;
import java.text.ParseException;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
@@ -99,12 +98,48 @@ public class EclipseLinkJpaOperationsTests extends AbstractJpaOperationsTests {
super.testMerge();
}
@Test
@Override
public void testMergeCollection() {
super.testMergeCollection();
}
@Test
@Override
public void testMergeNullCollection() {
super.testMergeNullCollection();
}
@Test
@Override
public void testMergeCollectionWithNullElement() {
super.testMergeCollectionWithNullElement();
}
@Test
@Override
public void testPersist() {
super.testPersist();
}
@Test
@Override
public void testPersistCollection() {
super.testPersistCollection();
}
@Test
@Override
public void testPersistNullCollection() {
super.testPersistNullCollection();
}
@Test
@Override
public void testPersistCollectionWithNullElement() {
super.testPersistCollectionWithNullElement();
}
@Test
@Override
public void testGetAllStudents() {

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2012 the original author or authors.
* Copyright 2002-2013 the original author or authors.
*
* 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
@@ -128,12 +128,48 @@ public class HibernateJpaOperationsTests extends AbstractJpaOperationsTests {
super.testMerge();
}
@Test
@Override
public void testMergeCollection() {
super.testMergeCollection();
}
@Test
@Override
public void testMergeNullCollection() {
super.testMergeNullCollection();
}
@Test
@Override
public void testMergeCollectionWithNullElement() {
super.testMergeCollectionWithNullElement();
}
@Test
@Override
public void testPersist() {
super.testPersist();
}
@Test
@Override
public void testPersistCollection() {
super.testPersistCollection();
}
@Test
@Override
public void testPersistNullCollection() {
super.testPersistNullCollection();
}
@Test
@Override
public void testPersistCollectionWithNullElement() {
super.testPersistCollectionWithNullElement();
}
@Test
@Override
public void testDeleteInBatch() {

View File

@@ -17,7 +17,6 @@ import java.sql.SQLException;
import java.text.ParseException;
import org.junit.Assert;
import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
import org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl;
import org.apache.openjpa.jdbc.meta.MappingTool;
@@ -144,12 +143,48 @@ public class OpenJpaJpaOperationsTests extends AbstractJpaOperationsTests {
super.testMerge();
}
@Test
@Override
public void testMergeCollection() {
super.testMergeCollection();
}
@Test
@Override
public void testMergeNullCollection() {
super.testMergeNullCollection();
}
@Test
@Override
public void testMergeCollectionWithNullElement() {
super.testMergeCollectionWithNullElement();
}
@Test
@Override
public void testPersist() {
super.testPersist();
}
@Test
@Override
public void testPersistCollection() {
super.testPersistCollection();
}
@Test
@Override
public void testPersistNullCollection() {
super.testPersistNullCollection();
}
@Test
@Override
public void testPersistCollectionWithNullElement() {
super.testPersistCollectionWithNullElement();
}
@Test
@Override
public void testGetAllStudents() {