Add test
This commit is contained in:
parent
94f23dd2d5
commit
3a9c578a14
|
@ -27,6 +27,8 @@ import javax.persistence.Transient;
|
||||||
import javax.persistence.TypedQuery;
|
import javax.persistence.TypedQuery;
|
||||||
import javax.persistence.Version;
|
import javax.persistence.Version;
|
||||||
|
|
||||||
|
import org.hibernate.cfg.AvailableSettings;
|
||||||
|
|
||||||
import org.hibernate.testing.TestForIssue;
|
import org.hibernate.testing.TestForIssue;
|
||||||
import org.hibernate.testing.orm.junit.DomainModel;
|
import org.hibernate.testing.orm.junit.DomainModel;
|
||||||
import org.hibernate.testing.orm.junit.ServiceRegistry;
|
import org.hibernate.testing.orm.junit.ServiceRegistry;
|
||||||
|
@ -35,6 +37,7 @@ import org.hibernate.testing.orm.junit.SessionFactoryScope;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.hibernate.testing.transaction.TransactionUtil.doInHibernate;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
|
||||||
|
@ -51,7 +54,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
@ServiceRegistry(
|
@ServiceRegistry(
|
||||||
settings = {
|
settings = {
|
||||||
@ServiceRegistry.Setting(
|
@ServiceRegistry.Setting(
|
||||||
name = "AvailableSettings.MERGE_ENTITY_COPY_OBSERVER", value = "allow"
|
name = AvailableSettings.MERGE_ENTITY_COPY_OBSERVER, value = "allow"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -237,7 +240,7 @@ public class CascadeMergeToProxyEntityCopyAllowedTest {
|
||||||
})
|
})
|
||||||
private Project project;
|
private Project project;
|
||||||
|
|
||||||
@ManyToMany(targetEntity = Speaker.class, fetch = FetchType.LAZY, cascade = {
|
@ManyToMany(targetEntity = Speaker.class,fetch = FetchType.LAZY, cascade = {
|
||||||
CascadeType.PERSIST,
|
CascadeType.PERSIST,
|
||||||
CascadeType.REFRESH
|
CascadeType.REFRESH
|
||||||
})
|
})
|
||||||
|
|
|
@ -13,6 +13,7 @@ import java.util.Iterator;
|
||||||
import org.hibernate.engine.spi.SessionImplementor;
|
import org.hibernate.engine.spi.SessionImplementor;
|
||||||
|
|
||||||
import org.hibernate.testing.orm.junit.DomainModel;
|
import org.hibernate.testing.orm.junit.DomainModel;
|
||||||
|
import org.hibernate.testing.orm.junit.FailureExpected;
|
||||||
import org.hibernate.testing.orm.junit.SessionFactory;
|
import org.hibernate.testing.orm.junit.SessionFactory;
|
||||||
import org.hibernate.testing.orm.junit.SessionFactoryScope;
|
import org.hibernate.testing.orm.junit.SessionFactoryScope;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
@ -32,6 +33,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@SessionFactory
|
@SessionFactory
|
||||||
|
@FailureExpected( reason = "This should be fixed by Nathan PR")
|
||||||
public class RefreshTest {
|
public class RefreshTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -0,0 +1,223 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
|
||||||
|
* See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
|
||||||
|
*/
|
||||||
|
package org.hibernate.orm.test.manytomany;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
import javax.persistence.CascadeType;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.FetchType;
|
||||||
|
import javax.persistence.Id;
|
||||||
|
import javax.persistence.ManyToMany;
|
||||||
|
import javax.persistence.TypedQuery;
|
||||||
|
|
||||||
|
import org.hibernate.testing.orm.junit.DomainModel;
|
||||||
|
import org.hibernate.testing.orm.junit.SessionFactory;
|
||||||
|
import org.hibernate.testing.orm.junit.SessionFactoryScope;
|
||||||
|
import org.junit.jupiter.api.AfterEach;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
|
import static org.hamcrest.core.Is.is;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Andrea Boriero
|
||||||
|
*/
|
||||||
|
@DomainModel(
|
||||||
|
annotatedClasses = {
|
||||||
|
ManyToManyUnidirectionalFetchTest.Event.class,
|
||||||
|
ManyToManyUnidirectionalFetchTest.Speaker.class
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@SessionFactory
|
||||||
|
public class ManyToManyUnidirectionalFetchTest {
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
public void setup(SessionFactoryScope scope) {
|
||||||
|
scope.inTransaction(
|
||||||
|
session -> {
|
||||||
|
Event event = new Event( 1L, "Hibernate" );
|
||||||
|
session.save( event );
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterEach
|
||||||
|
public void tearDown(SessionFactoryScope scope) {
|
||||||
|
scope.inTransaction(
|
||||||
|
session -> {
|
||||||
|
Event event = session.get( Event.class, 1L );
|
||||||
|
session.delete( event );
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testJoinFetchEmptyCollection(SessionFactoryScope scope) {
|
||||||
|
scope.inTransaction(
|
||||||
|
sesison -> {
|
||||||
|
TypedQuery<Event> query = sesison.createQuery(
|
||||||
|
"SELECT e FROM Event e LEFT JOIN FETCH e.speakers WHERE e.id = :oid", Event.class );
|
||||||
|
query.setParameter( "oid", 1L );
|
||||||
|
Event event = query.getSingleResult();
|
||||||
|
assertNotNull( event );
|
||||||
|
assertEquals( 0, event.getSpeakers().size() );
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testJoinEmptyCollection(SessionFactoryScope scope) {
|
||||||
|
scope.inTransaction(
|
||||||
|
sesison -> {
|
||||||
|
TypedQuery<Event> query = sesison.createQuery(
|
||||||
|
"SELECT e FROM Event e LEFT JOIN e.speakers WHERE e.id = :oid", Event.class );
|
||||||
|
query.setParameter( "oid", 1L );
|
||||||
|
Event event = query.getSingleResult();
|
||||||
|
assertNotNull( event );
|
||||||
|
Set<Speaker> speakers = event.getSpeakers();
|
||||||
|
assertEquals( 0, speakers.size() );
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testJoinFetch(SessionFactoryScope scope) {
|
||||||
|
addSpeakerToEvent( scope );
|
||||||
|
scope.inTransaction(
|
||||||
|
sesison -> {
|
||||||
|
TypedQuery<Event> query = sesison.createQuery(
|
||||||
|
"SELECT e FROM Event e LEFT JOIN FETCH e.speakers WHERE e.id = :oid", Event.class );
|
||||||
|
query.setParameter( "oid", 1L );
|
||||||
|
Event event = query.getSingleResult();
|
||||||
|
assertNotNull( event );
|
||||||
|
Set<Speaker> speakers = event.getSpeakers();
|
||||||
|
assertEquals( 1, speakers.size() );
|
||||||
|
assertThat( speakers.iterator().next().getName(), is( "Steve" ) );
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testJoin(SessionFactoryScope scope) {
|
||||||
|
addSpeakerToEvent( scope );
|
||||||
|
scope.inTransaction(
|
||||||
|
sesison -> {
|
||||||
|
TypedQuery<Event> query = sesison.createQuery(
|
||||||
|
"SELECT e FROM Event e LEFT JOIN e.speakers WHERE e.id = :oid", Event.class );
|
||||||
|
query.setParameter( "oid", 1L );
|
||||||
|
Event event = query.getSingleResult();
|
||||||
|
assertNotNull( event );
|
||||||
|
Set<Speaker> speakers = event.getSpeakers();
|
||||||
|
|
||||||
|
assertEquals( 1, speakers.size() );
|
||||||
|
|
||||||
|
assertThat( speakers.iterator().next().getName(), is( "Steve" ) );
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addSpeakerToEvent(SessionFactoryScope scope) {
|
||||||
|
scope.inTransaction(
|
||||||
|
session -> {
|
||||||
|
Event event = session.get( Event.class, 1l );
|
||||||
|
Speaker speaker = new Speaker( 2l, "Steve" );
|
||||||
|
event.addSpeaker( speaker );
|
||||||
|
session.save( speaker );
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Entity(name = "Event")
|
||||||
|
public static class Event {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public Event() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public Event(Long id, String name) {
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ManyToMany(targetEntity = Speaker.class, fetch = FetchType.LAZY, cascade = {
|
||||||
|
CascadeType.PERSIST,
|
||||||
|
CascadeType.REFRESH,
|
||||||
|
CascadeType.REMOVE
|
||||||
|
})
|
||||||
|
private Set<Speaker> speakers = new HashSet<>();
|
||||||
|
|
||||||
|
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 Set<Speaker> getSpeakers() {
|
||||||
|
return Collections.unmodifiableSet( speakers );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSpeakers(Set<Speaker> speakers) {
|
||||||
|
this.speakers = speakers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addSpeaker(Speaker speaker) {
|
||||||
|
this.speakers.add( speaker );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Entity(name = "Speaker")
|
||||||
|
public static class Speaker {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public Speaker() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public Speaker(Long id, String name) {
|
||||||
|
this.id = id;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,242 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
|
||||||
|
* See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
|
||||||
|
*/
|
||||||
|
package org.hibernate.orm.test.onetomany;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.Id;
|
||||||
|
import javax.persistence.ManyToOne;
|
||||||
|
import javax.persistence.OneToMany;
|
||||||
|
import javax.persistence.TypedQuery;
|
||||||
|
|
||||||
|
import org.hibernate.Hibernate;
|
||||||
|
import org.hibernate.collection.internal.PersistentSet;
|
||||||
|
|
||||||
|
import org.hibernate.testing.orm.junit.DomainModel;
|
||||||
|
import org.hibernate.testing.orm.junit.SessionFactory;
|
||||||
|
import org.hibernate.testing.orm.junit.SessionFactoryScope;
|
||||||
|
import org.junit.jupiter.api.AfterEach;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.hamcrest.CoreMatchers.instanceOf;
|
||||||
|
import static org.hamcrest.CoreMatchers.is;
|
||||||
|
import static org.hamcrest.CoreMatchers.sameInstance;
|
||||||
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Andrea Boriero
|
||||||
|
*/
|
||||||
|
@DomainModel(
|
||||||
|
annotatedClasses = {
|
||||||
|
OneToManySelfReferenceTest.Event.class
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@SessionFactory
|
||||||
|
public class OneToManySelfReferenceTest {
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
public void setUp(SessionFactoryScope scope) {
|
||||||
|
Event parent = new Event();
|
||||||
|
scope.inTransaction(
|
||||||
|
session -> {
|
||||||
|
parent.setName( "parent" );
|
||||||
|
parent.setId( 1L );
|
||||||
|
|
||||||
|
Event child = new Event();
|
||||||
|
child.setId( 2L );
|
||||||
|
child.setName( "child" );
|
||||||
|
|
||||||
|
parent.addChid( child );
|
||||||
|
|
||||||
|
session.save( parent );
|
||||||
|
session.save( child );
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterEach
|
||||||
|
public void tearDown(SessionFactoryScope scope) {
|
||||||
|
scope.inTransaction(
|
||||||
|
session ->
|
||||||
|
session.createQuery( "delete from Event" ).executeUpdate()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSelectParentFetchChildren(SessionFactoryScope scope) {
|
||||||
|
scope.inTransaction(
|
||||||
|
session -> {
|
||||||
|
TypedQuery<Event> eventTypedQuery = session.createQuery(
|
||||||
|
"SELECT e FROM Event e left join fetch e.children WHERE e.id = :oid",
|
||||||
|
Event.class
|
||||||
|
);
|
||||||
|
|
||||||
|
eventTypedQuery.setParameter( "oid", 1L );
|
||||||
|
|
||||||
|
Event event = eventTypedQuery.getSingleResult();
|
||||||
|
Set<Event> children = event.getChildren();
|
||||||
|
assertTrue(
|
||||||
|
Hibernate.isInitialized( children ),
|
||||||
|
"Children collection has not been initialized"
|
||||||
|
);
|
||||||
|
assertThat( children.size(), is( 1 ) );
|
||||||
|
|
||||||
|
assertThat( children, instanceOf( PersistentSet.class ) );
|
||||||
|
PersistentSet persistentSet = (PersistentSet) children;
|
||||||
|
assertThat( persistentSet.getKey(), is(1L) );
|
||||||
|
|
||||||
|
Event child = children.iterator().next();
|
||||||
|
Set<Event> childChildren = child.getChildren();
|
||||||
|
assertFalse(
|
||||||
|
Hibernate.isInitialized( childChildren ),
|
||||||
|
"Child children collection should not be initialized"
|
||||||
|
);
|
||||||
|
assertThat( childChildren, instanceOf( PersistentSet.class ) );
|
||||||
|
PersistentSet childChildrenPersistentSet = (PersistentSet) childChildren;
|
||||||
|
assertThat( childChildrenPersistentSet.getKey(), is(2L) );
|
||||||
|
|
||||||
|
assertThat( childChildren.size(), is(0) );
|
||||||
|
assertTrue(
|
||||||
|
Hibernate.isInitialized( childChildren ),
|
||||||
|
"Child children collection should not be initialized"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSelectParent(SessionFactoryScope scope) {
|
||||||
|
scope.inTransaction(
|
||||||
|
session -> {
|
||||||
|
TypedQuery<Event> eventTypedQuery = session.createQuery(
|
||||||
|
"SELECT e FROM Event e WHERE e.id = :oid",
|
||||||
|
Event.class
|
||||||
|
);
|
||||||
|
|
||||||
|
eventTypedQuery.setParameter( "oid", 1L );
|
||||||
|
|
||||||
|
Event event = eventTypedQuery.getSingleResult();
|
||||||
|
Set<Event> children = event.getChildren();
|
||||||
|
assertFalse(
|
||||||
|
Hibernate.isInitialized( children ),
|
||||||
|
"Children collection should not be initialized"
|
||||||
|
);
|
||||||
|
assertThat( children.size(), is( 1 ) );
|
||||||
|
assertTrue(
|
||||||
|
Hibernate.isInitialized( children ),
|
||||||
|
"Children collection has not been initialized"
|
||||||
|
);
|
||||||
|
Event child = children.iterator().next();
|
||||||
|
Set<Event> childChildren = child.getChildren();
|
||||||
|
assertFalse(
|
||||||
|
Hibernate.isInitialized( childChildren ),
|
||||||
|
"Child children collection should not be initialized"
|
||||||
|
);
|
||||||
|
assertThat( childChildren, instanceOf( PersistentSet.class ) );
|
||||||
|
PersistentSet childChildrenPersistentSet = (PersistentSet) childChildren;
|
||||||
|
assertThat( childChildrenPersistentSet.getKey(), is(2L) );
|
||||||
|
|
||||||
|
assertThat( childChildren.size(), is(0) );
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSelectChild(SessionFactoryScope scope) {
|
||||||
|
scope.inTransaction(
|
||||||
|
session -> {
|
||||||
|
TypedQuery<Event> eventTypedQuery = session.createQuery(
|
||||||
|
"SELECT e FROM Event e left join fetch e.children WHERE e.id = :oid",
|
||||||
|
Event.class
|
||||||
|
);
|
||||||
|
|
||||||
|
eventTypedQuery.setParameter( "oid", 2L );
|
||||||
|
|
||||||
|
Event event = eventTypedQuery.getSingleResult();
|
||||||
|
Set<Event> children = event.getChildren();
|
||||||
|
assertTrue(
|
||||||
|
Hibernate.isInitialized( children ),
|
||||||
|
"Children collection has not been initialized"
|
||||||
|
);
|
||||||
|
assertThat( children.size(), is( 0 ) );
|
||||||
|
assertThat( children, instanceOf( PersistentSet.class ) );
|
||||||
|
PersistentSet childrenPersistentSet = (PersistentSet) children;
|
||||||
|
assertThat( childrenPersistentSet.getKey(), is(2L) );
|
||||||
|
|
||||||
|
Event parent = event.getParent();
|
||||||
|
assertThat( parent.getId(), is(1L) );
|
||||||
|
Set<Event> parentChildren = parent.getChildren();
|
||||||
|
assertFalse(
|
||||||
|
Hibernate.isInitialized( parentChildren ),
|
||||||
|
"Child children collection should not be initialized"
|
||||||
|
);
|
||||||
|
PersistentSet parentChildrenPersistentSet = (PersistentSet) parentChildren;
|
||||||
|
assertThat( parentChildrenPersistentSet.getKey(), is(1L) );
|
||||||
|
|
||||||
|
Event next = parentChildren.iterator().next();
|
||||||
|
assertThat( next, sameInstance(event) );
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Entity(name = "Event")
|
||||||
|
public static class Event {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private Event parent;
|
||||||
|
|
||||||
|
private Set<Event> children = new HashSet<>();
|
||||||
|
|
||||||
|
@Id
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ManyToOne(targetEntity = Event.class)
|
||||||
|
public Event getParent() {
|
||||||
|
return parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParent(Event parent) {
|
||||||
|
this.parent = parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@OneToMany(targetEntity = Event.class, mappedBy = "parent")
|
||||||
|
public Set<Event> getChildren() {
|
||||||
|
return children;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChildren(Set<Event> children) {
|
||||||
|
this.children = children;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addChid(Event event) {
|
||||||
|
this.children.add( event );
|
||||||
|
event.setParent( this );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,104 +0,0 @@
|
||||||
/*
|
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
*
|
|
||||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
*/
|
|
||||||
package org.hibernate.test.cascade;
|
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class A
|
|
||||||
{
|
|
||||||
// Constants -----------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// Static --------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// Attributes ----------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
private long id;
|
|
||||||
|
|
||||||
private String data;
|
|
||||||
|
|
||||||
// A 1 - * H
|
|
||||||
private Set hs;
|
|
||||||
|
|
||||||
// A 1 - 1 G
|
|
||||||
private G g;
|
|
||||||
|
|
||||||
|
|
||||||
// Constructors --------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
public A()
|
|
||||||
{
|
|
||||||
hs = new HashSet();
|
|
||||||
}
|
|
||||||
|
|
||||||
public A(String data)
|
|
||||||
{
|
|
||||||
this();
|
|
||||||
this.data = data;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Public --------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
public long getId()
|
|
||||||
{
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(long id)
|
|
||||||
{
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setData(String data)
|
|
||||||
{
|
|
||||||
this.data = data;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getData()
|
|
||||||
{
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHs(Set hs)
|
|
||||||
{
|
|
||||||
this.hs = hs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set getHs()
|
|
||||||
{
|
|
||||||
return hs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setG(G g)
|
|
||||||
{
|
|
||||||
this.g = g;
|
|
||||||
}
|
|
||||||
|
|
||||||
public G getG()
|
|
||||||
{
|
|
||||||
return g;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addH(H h)
|
|
||||||
{
|
|
||||||
hs.add(h);
|
|
||||||
h.setA(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toString()
|
|
||||||
{
|
|
||||||
return "A[" + id + ", " + data + "]";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Package protected ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// Protected -----------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// Private -------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// Inner classes -------------------------------------------------------------------------------
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!--
|
|
||||||
~ Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
~
|
|
||||||
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
-->
|
|
||||||
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
|
|
||||||
|
|
||||||
<hibernate-mapping package="org.hibernate.test.cascade">
|
|
||||||
<class name="Child" table="Child">
|
|
||||||
<id name="id" column="id" type="java.lang.Long">
|
|
||||||
<generator class="increment"/>
|
|
||||||
</id>
|
|
||||||
<many-to-one name="parent" class="Parent" not-null="false" cascade="all"/>
|
|
||||||
</class>
|
|
||||||
</hibernate-mapping>
|
|
|
@ -1,36 +0,0 @@
|
||||||
/*
|
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
*
|
|
||||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
*/
|
|
||||||
package org.hibernate.test.cascade;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by IntelliJ IDEA.
|
|
||||||
* User: Gail
|
|
||||||
* Date: Jan 2, 2007
|
|
||||||
* Time: 4:51:29 PM
|
|
||||||
* To change this template use File | Settings | File Templates.
|
|
||||||
*/
|
|
||||||
public class Child {
|
|
||||||
private Long id;
|
|
||||||
private Parent parent;
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Parent getParent() {
|
|
||||||
return parent;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setParent(Parent parent) {
|
|
||||||
this.parent = parent;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!--
|
|
||||||
~ Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
~
|
|
||||||
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
-->
|
|
||||||
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
|
|
||||||
|
|
||||||
<hibernate-mapping package="org.hibernate.test.cascade">
|
|
||||||
<class name="Child" table="Child">
|
|
||||||
<id name="id" column="id" type="java.lang.Long">
|
|
||||||
<generator class="native"/>
|
|
||||||
</id>
|
|
||||||
<many-to-one name="parent" class="Parent" not-null="true" cascade="all" />
|
|
||||||
</class>
|
|
||||||
</hibernate-mapping>
|
|
|
@ -1,17 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!--
|
|
||||||
~ Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
~
|
|
||||||
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
-->
|
|
||||||
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
|
|
||||||
|
|
||||||
<hibernate-mapping package="org.hibernate.test.cascade">
|
|
||||||
<class name="DeleteOrphanChild" table="DeleteOrphanChild">
|
|
||||||
<id name="id" column="id" type="java.lang.Long">
|
|
||||||
<generator class="native"/>
|
|
||||||
</id>
|
|
||||||
<many-to-one name="parent" class="Parent" not-null="false" cascade="all"/>
|
|
||||||
</class>
|
|
||||||
</hibernate-mapping>
|
|
|
@ -1,36 +0,0 @@
|
||||||
/*
|
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
*
|
|
||||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
*/
|
|
||||||
package org.hibernate.test.cascade;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by IntelliJ IDEA.
|
|
||||||
* User: Gail
|
|
||||||
* Date: Jan 2, 2007
|
|
||||||
* Time: 4:52:10 PM
|
|
||||||
* To change this template use File | Settings | File Templates.
|
|
||||||
*/
|
|
||||||
public class DeleteOrphanChild {
|
|
||||||
private Long id;
|
|
||||||
private Parent parent;
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Parent getParent() {
|
|
||||||
return parent;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setParent(Parent parent) {
|
|
||||||
this.parent = parent;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,95 +0,0 @@
|
||||||
/*
|
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
*
|
|
||||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//$Id: $
|
|
||||||
|
|
||||||
|
|
||||||
package org.hibernate.test.cascade;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class G
|
|
||||||
{
|
|
||||||
// Constants -----------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// Static --------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// Attributes ----------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
private long id;
|
|
||||||
|
|
||||||
private String data;
|
|
||||||
|
|
||||||
// A 1 <-> 1 G
|
|
||||||
private A a;
|
|
||||||
|
|
||||||
// G * <-> * H
|
|
||||||
private Set hs;
|
|
||||||
|
|
||||||
// Constructors --------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
public G()
|
|
||||||
{
|
|
||||||
this(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public G(String data)
|
|
||||||
{
|
|
||||||
this.data = data;
|
|
||||||
hs = new HashSet();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Public --------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
public String getData()
|
|
||||||
{
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setData(String data)
|
|
||||||
{
|
|
||||||
this.data = data;
|
|
||||||
}
|
|
||||||
|
|
||||||
public A getA()
|
|
||||||
{
|
|
||||||
return a;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setA(A a)
|
|
||||||
{
|
|
||||||
this.a = a;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set getHs()
|
|
||||||
{
|
|
||||||
return hs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHs(Set s)
|
|
||||||
{
|
|
||||||
hs = s;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Package protected ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
long getId()
|
|
||||||
{
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Protected -----------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// Private -------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
private void setId(long id)
|
|
||||||
{
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Inner classes -------------------------------------------------------------------------------
|
|
||||||
}
|
|
|
@ -1,94 +0,0 @@
|
||||||
/*
|
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
*
|
|
||||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//$Id: $
|
|
||||||
|
|
||||||
|
|
||||||
package org.hibernate.test.cascade;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class H
|
|
||||||
{
|
|
||||||
// Constants -----------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// Static --------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// Attributes ----------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
private long id;
|
|
||||||
|
|
||||||
private String data;
|
|
||||||
|
|
||||||
private A a;
|
|
||||||
|
|
||||||
// G * <-> * H
|
|
||||||
private Set gs;
|
|
||||||
|
|
||||||
// Constructors --------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
public H()
|
|
||||||
{
|
|
||||||
this(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public H(String data)
|
|
||||||
{
|
|
||||||
this.data = data;
|
|
||||||
gs = new HashSet();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Public --------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
public long getId()
|
|
||||||
{
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getData()
|
|
||||||
{
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setData(String data)
|
|
||||||
{
|
|
||||||
this.data = data;
|
|
||||||
}
|
|
||||||
|
|
||||||
public A getA()
|
|
||||||
{
|
|
||||||
return a;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setA(A a)
|
|
||||||
{
|
|
||||||
this.a = a;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set getGs()
|
|
||||||
{
|
|
||||||
return gs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGs(Set gs)
|
|
||||||
{
|
|
||||||
this.gs = gs;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Package protected ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// Protected -----------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// Private -------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
private void setId(long id)
|
|
||||||
{
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Inner classes -------------------------------------------------------------------------------
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<!--
|
|
||||||
~ Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
~
|
|
||||||
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
-->
|
|
||||||
<!DOCTYPE hibernate-mapping SYSTEM "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
|
|
||||||
|
|
||||||
<hibernate-mapping package="org.hibernate.test.cascade">
|
|
||||||
|
|
||||||
<class name="Job" table="T_JOB">
|
|
||||||
<id name="id" column="JOB_ID">
|
|
||||||
<generator class="native"/>
|
|
||||||
</id>
|
|
||||||
|
|
||||||
<many-to-one name="batch" class="JobBatch" cascade="none" column="BATCH_ID"/>
|
|
||||||
|
|
||||||
<property name="status" type="int" column="JOB_STATUS" not-null="true"/>
|
|
||||||
<property name="processingInstructions" type="string" column="PI" not-null="true"/>
|
|
||||||
|
|
||||||
</class>
|
|
||||||
|
|
||||||
</hibernate-mapping>
|
|
|
@ -1,61 +0,0 @@
|
||||||
/*
|
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
*
|
|
||||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// $Id: Job.java 6663 2005-05-03 20:55:31Z steveebersole $
|
|
||||||
package org.hibernate.test.cascade;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Implementation of Job.
|
|
||||||
*
|
|
||||||
* @author Steve Ebersole
|
|
||||||
*/
|
|
||||||
public class Job {
|
|
||||||
private Long id;
|
|
||||||
private JobBatch batch;
|
|
||||||
private String processingInstructions;
|
|
||||||
private int status;
|
|
||||||
|
|
||||||
/** GCLIB constructor */
|
|
||||||
Job() {}
|
|
||||||
|
|
||||||
protected Job(JobBatch batch) {
|
|
||||||
this.batch = batch;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*package*/ void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public JobBatch getBatch() {
|
|
||||||
return batch;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*package*/ void setBatch(JobBatch batch) {
|
|
||||||
this.batch = batch;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProcessingInstructions() {
|
|
||||||
return processingInstructions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProcessingInstructions(String processingInstructions) {
|
|
||||||
this.processingInstructions = processingInstructions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus(int status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<!--
|
|
||||||
~ Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
~
|
|
||||||
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
-->
|
|
||||||
<!DOCTYPE hibernate-mapping SYSTEM "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
|
|
||||||
|
|
||||||
<hibernate-mapping package="org.hibernate.test.cascade">
|
|
||||||
|
|
||||||
<class name="JobBatch" table="T_JOB_BATCH">
|
|
||||||
<id name="id" column="BATCH_ID">
|
|
||||||
<generator class="native"/>
|
|
||||||
</id>
|
|
||||||
|
|
||||||
<property name="batchDate" type="timestamp" column="BATCH_DATE" not-null="true"/>
|
|
||||||
|
|
||||||
<set name="jobs" inverse="true" fetch="select" lazy="true" cascade="all, refresh">
|
|
||||||
<key column="BATCH_ID"/>
|
|
||||||
<one-to-many class="Job"/>
|
|
||||||
</set>
|
|
||||||
|
|
||||||
</class>
|
|
||||||
|
|
||||||
</hibernate-mapping>
|
|
|
@ -1,60 +0,0 @@
|
||||||
/*
|
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
*
|
|
||||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// $Id: JobBatch.java 6663 2005-05-03 20:55:31Z steveebersole $
|
|
||||||
package org.hibernate.test.cascade;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Implementation of JobBatch.
|
|
||||||
*
|
|
||||||
* @author Steve Ebersole
|
|
||||||
*/
|
|
||||||
public class JobBatch {
|
|
||||||
private Long id;
|
|
||||||
private Date batchDate;
|
|
||||||
private Set jobs = new HashSet();
|
|
||||||
|
|
||||||
/** CGLIB constructor */
|
|
||||||
JobBatch() {}
|
|
||||||
|
|
||||||
public JobBatch(Date batchDate) {
|
|
||||||
this.batchDate = batchDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getBatchDate() {
|
|
||||||
return batchDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBatchDate(Date batchDate) {
|
|
||||||
this.batchDate = batchDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set getJobs() {
|
|
||||||
return jobs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setJobs(Set jobs) {
|
|
||||||
this.jobs = jobs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Job createJob() {
|
|
||||||
Job job = new Job( this );
|
|
||||||
jobs.add( job );
|
|
||||||
return job;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,73 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<!--
|
|
||||||
~ Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
~
|
|
||||||
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
-->
|
|
||||||
<!DOCTYPE hibernate-mapping SYSTEM "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
|
|
||||||
|
|
||||||
<hibernate-mapping package="org.hibernate.test.cascade">
|
|
||||||
|
|
||||||
<class name="A" table="HB_A">
|
|
||||||
|
|
||||||
<id name="id" type="long"><generator class="native"/></id>
|
|
||||||
|
|
||||||
<property name="data" column="`data`" type="string" not-null="true"/>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Associations
|
|
||||||
-->
|
|
||||||
|
|
||||||
<set name="hs" inverse="true" cascade="all">
|
|
||||||
<key column="a_fk"/>
|
|
||||||
<one-to-many class="H"/>
|
|
||||||
</set>
|
|
||||||
<one-to-one name="g" class="G" property-ref="a" cascade="all"/>
|
|
||||||
|
|
||||||
</class>
|
|
||||||
|
|
||||||
<class name="G" table="HB_G">
|
|
||||||
|
|
||||||
<id name="id" type="long"><generator class="native"/></id>
|
|
||||||
|
|
||||||
<property name="data" column="`data`" type="string" not-null="true"/>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Associations
|
|
||||||
-->
|
|
||||||
|
|
||||||
<set name="hs" inverse="true" table="HB_G_H" cascade="all">
|
|
||||||
<key column="g_fk"/>
|
|
||||||
<many-to-many class="H" column="h_fk"/>
|
|
||||||
</set>
|
|
||||||
|
|
||||||
<many-to-one name="a"
|
|
||||||
column="aId"
|
|
||||||
unique="true"
|
|
||||||
not-null="false"/>
|
|
||||||
|
|
||||||
</class>
|
|
||||||
|
|
||||||
<class name="H" table="HB_H">
|
|
||||||
|
|
||||||
<id name="id" type="long"><generator class="native"/></id>
|
|
||||||
|
|
||||||
<property name="data" column="`data`" type="string" not-null="true"/>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Associations
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- *NOT* cascaded -->
|
|
||||||
<set name="gs" table="HB_G_H">
|
|
||||||
<key column="h_fk"/>
|
|
||||||
<many-to-many class="G" column="g_fk"/>
|
|
||||||
</set>
|
|
||||||
|
|
||||||
<many-to-one name="a" column="a_fk" class="A"/>
|
|
||||||
|
|
||||||
</class>
|
|
||||||
|
|
||||||
|
|
||||||
</hibernate-mapping>
|
|
|
@ -1,24 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!--
|
|
||||||
~ Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
~
|
|
||||||
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
-->
|
|
||||||
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
|
|
||||||
|
|
||||||
<hibernate-mapping package="org.hibernate.test.cascade">
|
|
||||||
<class name="Parent" table="Parent">
|
|
||||||
<id name="id" column="id" type="java.lang.Long">
|
|
||||||
<generator class="increment"/>
|
|
||||||
</id>
|
|
||||||
<set name="children" cascade="all" inverse="true">
|
|
||||||
<key column="parent"/>
|
|
||||||
<one-to-many class="Child"/>
|
|
||||||
</set>
|
|
||||||
<set name="deleteOrphanChildren" cascade="all-delete-orphan" inverse="true">
|
|
||||||
<key column="parent"/>
|
|
||||||
<one-to-many class="DeleteOrphanChild"/>
|
|
||||||
</set>
|
|
||||||
</class>
|
|
||||||
</hibernate-mapping>
|
|
|
@ -1,45 +0,0 @@
|
||||||
/*
|
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
*
|
|
||||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
*/
|
|
||||||
package org.hibernate.test.cascade;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by IntelliJ IDEA.
|
|
||||||
* User: Gail
|
|
||||||
* Date: Jan 2, 2007
|
|
||||||
* Time: 4:50:24 PM
|
|
||||||
* To change this template use File | Settings | File Templates.
|
|
||||||
*/
|
|
||||||
public class Parent {
|
|
||||||
private Long id;
|
|
||||||
private Set deleteOrphanChildren;
|
|
||||||
private Set children;
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set getDeleteOrphanChildren() {
|
|
||||||
return deleteOrphanChildren;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDeleteOrphanChildren(Set deleteOrphanChildren) {
|
|
||||||
this.deleteOrphanChildren = deleteOrphanChildren;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set getChildren() {
|
|
||||||
return children;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setChildren(Set children) {
|
|
||||||
this.children = children;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!--
|
|
||||||
~ Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
~
|
|
||||||
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
-->
|
|
||||||
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
|
|
||||||
|
|
||||||
<hibernate-mapping package="org.hibernate.test.cascade">
|
|
||||||
<class name="Parent" table="Parent">
|
|
||||||
<id name="id" column="id" type="java.lang.Long">
|
|
||||||
<generator class="assigned"/>
|
|
||||||
</id>
|
|
||||||
<set name="children" cascade="all" inverse="true">
|
|
||||||
<key column="parent"/>
|
|
||||||
<one-to-many class="Child"/>
|
|
||||||
</set>
|
|
||||||
</class>
|
|
||||||
</hibernate-mapping>
|
|
Loading…
Reference in New Issue