[hibernate-commits] Hibernate SVN: r10509 - trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Thu Sep 21 17:10:05 EDT 2006


Author: max.andersen at jboss.com
Date: 2006-09-21 17:10:01 -0400 (Thu, 21 Sep 2006)
New Revision: 10509

Added:
   trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/CascadeTest.java
   trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Student.java
   trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Teacher.java
Log:
test showing massive cascading

Added: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/CascadeTest.java
===================================================================
--- trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/CascadeTest.java	2006-09-21 14:41:33 UTC (rev 10508)
+++ trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/CascadeTest.java	2006-09-21 21:10:01 UTC (rev 10509)
@@ -0,0 +1,66 @@
+//$Id: FetchTest.java 9796 2006-04-26 06:46:52Z epbernard $
+package org.hibernate.ejb.test.cascade;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+
+import org.hibernate.ejb.test.TestCase;
+
+
+/**
+ * @author Max Rydahl Andersen
+ */
+public class CascadeTest extends TestCase {
+
+	public void testCascade() throws Exception {
+		
+		EntityManager em = factory.createEntityManager();
+		em.getTransaction().begin();
+		
+		Teacher teacher = null;
+		
+		teacher = new Teacher();
+
+		Student student = new Student();
+
+		teacher.setFavoriteStudent(student);
+		student.setFavoriteTeacher(teacher);
+
+		teacher.getStudents().add(student);
+		student.setPrimaryTeacher(teacher);
+
+		em.persist( teacher );
+		em.getTransaction().commit();
+	
+		System.out.println("***************************");
+		em = factory.createEntityManager();
+		em.getTransaction().begin();
+		
+		Teacher foundTeacher = (Teacher) em.createQuery( "select t from Teacher as t" ).getSingleResult();
+		
+		System.out.println(foundTeacher);
+		System.out.println(foundTeacher.getFavoriteStudent());
+		
+		for (Student fstudent : foundTeacher.getStudents()) {
+			System.out.println(fstudent);			
+			System.out.println(fstudent.getFavoriteTeacher());
+			System.out.println(fstudent.getPrimaryTeacher());
+		}
+		
+		em.getTransaction().commit(); // here *alot* of flushes occur on an object graph that has *Zero* changes.
+		em.close();
+		
+		
+	}
+
+
+	public Class[] getAnnotatedClasses() {
+		return new Class[]{
+				Teacher.class,
+				Student.class
+		};
+	}
+	
+	
+}

Added: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Student.java
===================================================================
--- trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Student.java	2006-09-21 14:41:33 UTC (rev 10508)
+++ trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Student.java	2006-09-21 21:10:01 UTC (rev 10509)
@@ -0,0 +1,57 @@
+package org.hibernate.ejb.test.cascade;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToOne;
+
+import org.hibernate.annotations.AccessType;
+
+ at Entity
+ at AccessType("field")
+public class Student {
+
+	@Id @GeneratedValue
+	Long id;
+	
+	String name;
+	
+	@ManyToOne(cascade={CascadeType.MERGE, CascadeType.PERSIST})
+	private Teacher primaryTeacher;
+
+	@OneToOne(cascade={CascadeType.MERGE, CascadeType.PERSIST})
+	private Teacher favoriteTeacher;
+	
+	public  Student() {
+	}
+
+	public Teacher getFavoriteTeacher() {
+		return favoriteTeacher;
+	}
+
+	public void setFavoriteTeacher(Teacher lifeCover) {
+		this.favoriteTeacher = lifeCover;
+	}
+
+	public Teacher getPrimaryTeacher() {
+		return primaryTeacher;
+	}
+
+	public void setPrimaryTeacher(Teacher relativeTo) {
+		this.primaryTeacher = relativeTo;
+	}
+	
+	public Long getId() {
+		return id;
+	}
+
+	public String getName() {
+		return name;
+	}
+	
+	public void setName(String name) {
+		this.name = name;
+	}
+}

Added: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Teacher.java
===================================================================
--- trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Teacher.java	2006-09-21 14:41:33 UTC (rev 10508)
+++ trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Teacher.java	2006-09-21 21:10:01 UTC (rev 10509)
@@ -0,0 +1,62 @@
+package org.hibernate.ejb.test.cascade;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+
+import org.hibernate.annotations.AccessType;
+
+ at Entity
+ at AccessType("field")
+public class Teacher {
+	
+	@Id @GeneratedValue
+	Long id;
+	
+	String name;
+
+	@OneToMany(mappedBy="primaryTeacher", cascade={CascadeType.MERGE, CascadeType.PERSIST})
+	private Set<Student> students = new HashSet<Student>();
+
+	@OneToOne(mappedBy="favoriteTeacher", cascade={CascadeType.MERGE, CascadeType.PERSIST})
+	private Student favoriteStudent;
+	
+	public  Teacher() {
+	}
+
+	public Student getFavoriteStudent() {
+		return favoriteStudent;
+	}
+
+	public void setFavoriteStudent(
+			Student contributionOrBenefitParameters) {
+		this.favoriteStudent = contributionOrBenefitParameters;
+	}
+
+	public Set<Student> getStudents() {
+		return students;
+	}
+
+	public void setStudents(
+			Set<Student> todoCollection) {
+		this.students = todoCollection;
+	}
+	
+	public Long getId() {
+		return id;
+	}
+	
+	public String getName() {
+		return name;
+	}
+	
+	public void setName(String name) {
+		this.name = name;
+	}
+}




More information about the hibernate-commits mailing list