|
From: <hib...@li...> - 2006-06-09 14:35:12
|
Author: ste...@jb...
Date: 2006-06-09 10:35:09 -0400 (Fri, 09 Jun 2006)
New Revision: 10005
Added:
trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/
trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/CascadeTest.java
trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/Child.java
trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/Parent.java
trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/ParentChild.hbm.xml
Log:
test for persist() with reference to non-cascaded transient association
Added: trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/CascadeTest.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/CascadeTest.java 2006-06-09 11:01:53 UTC (rev 10004)
+++ trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/CascadeTest.java 2006-06-09 14:35:09 UTC (rev 10005)
@@ -0,0 +1,50 @@
+package org.hibernate.test.jpa.cascade;
+
+import org.hibernate.test.jpa.AbstractJPATest;
+import org.hibernate.Session;
+import org.hibernate.event.def.DefaultPersistOnFlushEventListener;
+import org.hibernate.cfg.Configuration;
+
+/**
+ * todo: describe CascadeTest
+ *
+ * @author Steve Ebersole
+ */
+public class CascadeTest extends AbstractJPATest {
+ public CascadeTest(String name) {
+ super( name );
+ }
+
+ protected String[] getMappings() {
+ return new String[] { "jpa/cascade/ParentChild.hbm.xml" };
+ }
+
+ protected void configure(Configuration cfg) {
+ super.configure( cfg );
+// cfg.setListeners( "create", new DefaultPersistOnFlushEventListener[] { new DefaultPersistOnFlushEventListener() } );
+// cfg.setListeners( "create-onflush", new DefaultPersistOnFlushEventListener[] { new DefaultPersistOnFlushEventListener() } );
+
+ }
+
+ public void testPersistOnFlushWithNoCascadeToTransientAssociation() {
+ // according to the JPA spec, persist()ing an entity should throw
+ // an exception when said entity contains a reference to a transient
+ // asoociation where that association is not marked for cascading
+ // the persist operation...
+ Session s = openSession();
+ s.beginTransaction();
+ Parent p = new Parent( "p1" );
+ Child c = new Child( "c1" );
+ c.setParent( p );
+ s.persist( c );
+ s.getTransaction().commit();
+ s.close();
+
+ s = openSession();
+ s.beginTransaction();
+ s.createQuery( "delete Child" ).executeUpdate();
+ s.createQuery( "delete Parent" ).executeUpdate();
+ s.getTransaction().commit();
+ s.close();
+ }
+}
Added: trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/Child.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/Child.java 2006-06-09 11:01:53 UTC (rev 10004)
+++ trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/Child.java 2006-06-09 14:35:09 UTC (rev 10005)
@@ -0,0 +1,43 @@
+package org.hibernate.test.jpa.cascade;
+
+/**
+ * todo: describe Child
+ *
+ * @author Steve Ebersole
+ */
+public class Child {
+ private Long id;
+ private String name;
+ private Parent parent;
+
+ public Child() {
+ }
+
+ public Child(String name) {
+ this.name = name;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Parent getParent() {
+ return parent;
+ }
+
+ public void setParent(Parent parent) {
+ this.parent = parent;
+ }
+}
Added: trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/Parent.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/Parent.java 2006-06-09 11:01:53 UTC (rev 10004)
+++ trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/Parent.java 2006-06-09 14:35:09 UTC (rev 10005)
@@ -0,0 +1,34 @@
+package org.hibernate.test.jpa.cascade;
+
+/**
+ * todo: describe Parent
+ *
+ * @author Steve Ebersole
+ */
+public class Parent {
+ private Long id;
+ private String name;
+
+ public Parent() {
+ }
+
+ public Parent(String name) {
+ this.name = name;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
Added: trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/ParentChild.hbm.xml
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/ParentChild.hbm.xml 2006-06-09 11:01:53 UTC (rev 10004)
+++ trunk/Hibernate3/test/org/hibernate/test/jpa/cascade/ParentChild.hbm.xml 2006-06-09 14:35:09 UTC (rev 10005)
@@ -0,0 +1,22 @@
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="org.hibernate.test.jpa.cascade">
+
+ <class name="Parent" table="PARENT">
+ <id name="id" column="ID" type="long">
+ <generator class="increment"/>
+ </id>
+ <property name="name"/>
+ </class>
+
+ <class name="Child" table="CHILD">
+ <id name="id" column="ID" type="long">
+ <generator class="increment"/>
+ </id>
+ <property name="name"/>
+ <many-to-one name="parent" class="Parent" cascade="none"/>
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
|