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 |