HHH-5472 : Test case for delaying saving an entity with non-nullable transient entities
This commit is contained in:
parent
ba764816b9
commit
52969e9561
|
@ -0,0 +1,83 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.identity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No Documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.Entity
|
||||||
|
public class A extends AbstractEntity {
|
||||||
|
private static final long serialVersionUID = 864804063L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.OneToMany(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, mappedBy = "a")
|
||||||
|
private java.util.Set<B> bCollection = new java.util.HashSet<B>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.ManyToMany(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, mappedBy = "aCollection")
|
||||||
|
private java.util.Set<D> dCollection = new java.util.HashSet<D>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.OneToMany(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, mappedBy = "a")
|
||||||
|
private java.util.Set<C> cCollection = new java.util.HashSet<C>();
|
||||||
|
|
||||||
|
public java.util.Set<B> getBCollection() {
|
||||||
|
return bCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBCollection(
|
||||||
|
java.util.Set<B> parameter) {
|
||||||
|
this.bCollection = parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public java.util.Set<D> getDCollection() {
|
||||||
|
return dCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDCollection(
|
||||||
|
java.util.Set<D> parameter) {
|
||||||
|
this.dCollection = parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public java.util.Set<C> getCCollection() {
|
||||||
|
return cCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCCollection(
|
||||||
|
java.util.Set<C> parameter) {
|
||||||
|
this.cCollection = parameter;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,97 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.identity;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.UUID;
|
||||||
|
import javax.persistence.Basic;
|
||||||
|
import javax.persistence.Column;
|
||||||
|
import javax.persistence.GeneratedValue;
|
||||||
|
import javax.persistence.GenerationType;
|
||||||
|
import javax.persistence.Id;
|
||||||
|
import javax.persistence.MappedSuperclass;
|
||||||
|
import javax.persistence.SequenceGenerator;
|
||||||
|
|
||||||
|
@MappedSuperclass
|
||||||
|
public abstract class AbstractEntity implements Serializable {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@SequenceGenerator(name = "TIGER_GEN", sequenceName = "TIGER_SEQ")
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "TIGER_GEN")
|
||||||
|
private Long id;
|
||||||
|
@Basic
|
||||||
|
@Column(unique = true, updatable = false, length = 36, columnDefinition = "char(36)")
|
||||||
|
private String uuid;
|
||||||
|
@Column(updatable = false)
|
||||||
|
private Date created;
|
||||||
|
|
||||||
|
public AbstractEntity() {
|
||||||
|
super();
|
||||||
|
uuid = UUID.randomUUID().toString();
|
||||||
|
created = new Date();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUuid() {
|
||||||
|
return uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getCreated() {
|
||||||
|
return created;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return uuid == null ? 0 : uuid.hashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj)
|
||||||
|
return true;
|
||||||
|
if (obj == null)
|
||||||
|
return false;
|
||||||
|
if (!(obj instanceof AbstractEntity ))
|
||||||
|
return false;
|
||||||
|
final AbstractEntity other = (AbstractEntity) obj;
|
||||||
|
if (uuid == null) {
|
||||||
|
if (other.uuid != null)
|
||||||
|
return false;
|
||||||
|
} else if (!uuid.equals(other.uuid))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
if (id != null) {
|
||||||
|
return "id: '" + id + "' uuid: '" + uuid + "'";
|
||||||
|
} else {
|
||||||
|
return "id: 'transient entity' " + " uuid: '" + uuid + "'";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,81 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.identity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No Documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.Entity
|
||||||
|
public class B extends AbstractEntity {
|
||||||
|
private static final long serialVersionUID = 325417243L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.OneToMany(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, mappedBy = "b")
|
||||||
|
private java.util.Set<C> cCollection = new java.util.HashSet<C>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.ManyToOne(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, optional = false)
|
||||||
|
private A a;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.ManyToOne(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, optional = false)
|
||||||
|
private F f;
|
||||||
|
|
||||||
|
public java.util.Set<C> getCCollection() {
|
||||||
|
return cCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCCollection(
|
||||||
|
java.util.Set<C> parameter) {
|
||||||
|
this.cCollection = parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public A getA() {
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setA(A parameter) {
|
||||||
|
this.a = parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public F getF() {
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setF(F parameter) {
|
||||||
|
this.f = parameter;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,80 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.identity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No Documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.Entity
|
||||||
|
public class C extends AbstractEntity {
|
||||||
|
private static final long serialVersionUID = 1226955752L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.ManyToOne(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, optional = false)
|
||||||
|
private A a;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.ManyToOne(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
)
|
||||||
|
private G g;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.ManyToOne(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, optional = false)
|
||||||
|
private B b;
|
||||||
|
|
||||||
|
public A getA() {
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setA(A parameter) {
|
||||||
|
this.a = parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public G getG() {
|
||||||
|
return g;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setG(G parameter) {
|
||||||
|
this.g = parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public B getB() {
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setB(B parameter) {
|
||||||
|
this.b = parameter;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,100 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.identity;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import org.hibernate.Session;
|
||||||
|
import org.hibernate.testing.DialectCheck;
|
||||||
|
import org.hibernate.testing.DialectChecks;
|
||||||
|
import org.hibernate.testing.FailureExpected;
|
||||||
|
import org.hibernate.testing.RequiresDialectFeature;
|
||||||
|
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
||||||
|
|
||||||
|
@RequiresDialectFeature(DialectChecks.SupportsIdentityColumns.class)
|
||||||
|
public class CascadeCircleIdentityIdTest extends BaseCoreFunctionalTestCase {
|
||||||
|
@Test
|
||||||
|
@FailureExpected( jiraKey = "HHH-5472" )
|
||||||
|
public void testCascade() {
|
||||||
|
A a = new A();
|
||||||
|
B b = new B();
|
||||||
|
C c = new C();
|
||||||
|
D d = new D();
|
||||||
|
E e = new E();
|
||||||
|
F f = new F();
|
||||||
|
G g = new G();
|
||||||
|
H h = new H();
|
||||||
|
|
||||||
|
a.getBCollection().add(b);
|
||||||
|
b.setA(a);
|
||||||
|
|
||||||
|
a.getCCollection().add(c);
|
||||||
|
c.setA(a);
|
||||||
|
|
||||||
|
b.getCCollection().add(c);
|
||||||
|
c.setB(b);
|
||||||
|
|
||||||
|
a.getDCollection().add(d);
|
||||||
|
d.getACollection().add(a);
|
||||||
|
|
||||||
|
d.getECollection().add(e);
|
||||||
|
e.setF(f);
|
||||||
|
|
||||||
|
f.getBCollection().add(b);
|
||||||
|
b.setF(f);
|
||||||
|
|
||||||
|
c.setG(g);
|
||||||
|
g.getCCollection().add(c);
|
||||||
|
|
||||||
|
f.setH(h);
|
||||||
|
h.setG(g);
|
||||||
|
|
||||||
|
Session s;
|
||||||
|
s = openSession();
|
||||||
|
s.getTransaction().begin();
|
||||||
|
try {
|
||||||
|
// Fails: says that C.b is null (even though it isn't). Doesn't fail if you persist c, g or h instead of a
|
||||||
|
s.persist(a);
|
||||||
|
s.flush();
|
||||||
|
} finally {
|
||||||
|
s.getTransaction().rollback();
|
||||||
|
s.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Class[] getAnnotatedClasses() {
|
||||||
|
return new Class[]{
|
||||||
|
A.class,
|
||||||
|
B.class,
|
||||||
|
C.class,
|
||||||
|
D.class,
|
||||||
|
E.class,
|
||||||
|
F.class,
|
||||||
|
G.class,
|
||||||
|
H.class
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.identity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No Documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.Entity
|
||||||
|
public class D extends AbstractEntity {
|
||||||
|
private static final long serialVersionUID = 2417176961L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.ManyToMany(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
)
|
||||||
|
private java.util.Set<A> aCollection = new java.util.HashSet<A>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.OneToMany(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
)
|
||||||
|
private java.util.Set<E> eCollection = new java.util.HashSet<E>();
|
||||||
|
|
||||||
|
public java.util.Set<A> getACollection() {
|
||||||
|
return aCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setACollection(
|
||||||
|
java.util.Set<A> parameter) {
|
||||||
|
this.aCollection = parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public java.util.Set<E> getECollection() {
|
||||||
|
return eCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setECollection(
|
||||||
|
java.util.Set<E> parameter) {
|
||||||
|
this.eCollection = parameter;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.identity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No Documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.Entity
|
||||||
|
public class E extends AbstractEntity {
|
||||||
|
private static final long serialVersionUID = 1226955558L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.ManyToOne(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, optional = false)
|
||||||
|
private F f;
|
||||||
|
|
||||||
|
public F getF() {
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setF(F parameter) {
|
||||||
|
this.f = parameter;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.identity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No Documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.Entity
|
||||||
|
public class F extends AbstractEntity {
|
||||||
|
private static final long serialVersionUID = 1471534025L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.OneToMany(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, mappedBy = "f")
|
||||||
|
private java.util.Set<B> bCollection = new java.util.HashSet<B>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.OneToOne(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
)
|
||||||
|
private H h;
|
||||||
|
|
||||||
|
public java.util.Set<B> getBCollection() {
|
||||||
|
return bCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBCollection(
|
||||||
|
java.util.Set<B> parameter) {
|
||||||
|
this.bCollection = parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public H getH() {
|
||||||
|
return h;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setH(H parameter) {
|
||||||
|
this.h = parameter;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.identity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No Documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.Entity
|
||||||
|
public class G extends AbstractEntity {
|
||||||
|
private static final long serialVersionUID = 325417437L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.OneToMany(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, mappedBy = "g")
|
||||||
|
private java.util.Set<C> cCollection = new java.util.HashSet<C>();
|
||||||
|
|
||||||
|
public java.util.Set<C> getCCollection() {
|
||||||
|
return cCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCCollection(
|
||||||
|
java.util.Set<C> parameter) {
|
||||||
|
this.cCollection = parameter;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.identity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No Documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.Entity
|
||||||
|
public class H extends AbstractEntity {
|
||||||
|
private static final long serialVersionUID = 1226955562L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.OneToOne(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
)
|
||||||
|
private G g;
|
||||||
|
|
||||||
|
public G getG() {
|
||||||
|
return g;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setG(G parameter) {
|
||||||
|
this.g = parameter;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,83 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.sequence;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No Documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.Entity
|
||||||
|
public class A extends AbstractEntity {
|
||||||
|
private static final long serialVersionUID = 864804063L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.OneToMany(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, mappedBy = "a")
|
||||||
|
private java.util.Set<B> bCollection = new java.util.HashSet<B>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.ManyToMany(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, mappedBy = "aCollection")
|
||||||
|
private java.util.Set<D> dCollection = new java.util.HashSet<D>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.OneToMany(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, mappedBy = "a")
|
||||||
|
private java.util.Set<C> cCollection = new java.util.HashSet<C>();
|
||||||
|
|
||||||
|
public java.util.Set<B> getBCollection() {
|
||||||
|
return bCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBCollection(
|
||||||
|
java.util.Set<B> parameter) {
|
||||||
|
this.bCollection = parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public java.util.Set<D> getDCollection() {
|
||||||
|
return dCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDCollection(
|
||||||
|
java.util.Set<D> parameter) {
|
||||||
|
this.dCollection = parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public java.util.Set<C> getCCollection() {
|
||||||
|
return cCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCCollection(
|
||||||
|
java.util.Set<C> parameter) {
|
||||||
|
this.cCollection = parameter;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,98 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.sequence;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import javax.persistence.Basic;
|
||||||
|
import javax.persistence.Column;
|
||||||
|
import javax.persistence.GeneratedValue;
|
||||||
|
import javax.persistence.GenerationType;
|
||||||
|
import javax.persistence.Id;
|
||||||
|
import javax.persistence.MappedSuperclass;
|
||||||
|
import javax.persistence.SequenceGenerator;
|
||||||
|
|
||||||
|
@MappedSuperclass
|
||||||
|
public abstract class AbstractEntity implements Serializable {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@SequenceGenerator(name = "TIGER_GEN", sequenceName = "TIGER_SEQ")
|
||||||
|
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TIGER_GEN")
|
||||||
|
private Long id;
|
||||||
|
@Basic
|
||||||
|
@Column(unique = true, updatable = false, length = 36, columnDefinition = "char(36)")
|
||||||
|
private String uuid;
|
||||||
|
@Column(updatable = false)
|
||||||
|
private Date created;
|
||||||
|
|
||||||
|
public AbstractEntity() {
|
||||||
|
super();
|
||||||
|
uuid = UUID.randomUUID().toString();
|
||||||
|
created = new Date();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUuid() {
|
||||||
|
return uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getCreated() {
|
||||||
|
return created;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return uuid == null ? 0 : uuid.hashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj)
|
||||||
|
return true;
|
||||||
|
if (obj == null)
|
||||||
|
return false;
|
||||||
|
if (!(obj instanceof AbstractEntity))
|
||||||
|
return false;
|
||||||
|
final AbstractEntity other = (AbstractEntity) obj;
|
||||||
|
if (uuid == null) {
|
||||||
|
if (other.uuid != null)
|
||||||
|
return false;
|
||||||
|
} else if (!uuid.equals(other.uuid))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
if (id != null) {
|
||||||
|
return "id: '" + id + "' uuid: '" + uuid + "'";
|
||||||
|
} else {
|
||||||
|
return "id: 'transient entity' " + " uuid: '" + uuid + "'";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,81 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.sequence;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No Documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.Entity
|
||||||
|
public class B extends AbstractEntity {
|
||||||
|
private static final long serialVersionUID = 325417243L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.OneToMany(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, mappedBy = "b")
|
||||||
|
private java.util.Set<C> cCollection = new java.util.HashSet<C>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.ManyToOne(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, optional = false)
|
||||||
|
private org.hibernate.test.annotations.cascade.circle.sequence.A a;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.ManyToOne(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, optional = false)
|
||||||
|
private F f;
|
||||||
|
|
||||||
|
public java.util.Set<C> getCCollection() {
|
||||||
|
return cCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCCollection(
|
||||||
|
java.util.Set<C> parameter) {
|
||||||
|
this.cCollection = parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public org.hibernate.test.annotations.cascade.circle.sequence.A getA() {
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setA(org.hibernate.test.annotations.cascade.circle.sequence.A parameter) {
|
||||||
|
this.a = parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public F getF() {
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setF(F parameter) {
|
||||||
|
this.f = parameter;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,80 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.sequence;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No Documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.Entity
|
||||||
|
public class C extends AbstractEntity {
|
||||||
|
private static final long serialVersionUID = 1226955752L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.ManyToOne(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, optional = false)
|
||||||
|
private org.hibernate.test.annotations.cascade.circle.sequence.A a;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.ManyToOne(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
)
|
||||||
|
private G g;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.ManyToOne(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, optional = false)
|
||||||
|
private org.hibernate.test.annotations.cascade.circle.sequence.B b;
|
||||||
|
|
||||||
|
public org.hibernate.test.annotations.cascade.circle.sequence.A getA() {
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setA(org.hibernate.test.annotations.cascade.circle.sequence.A parameter) {
|
||||||
|
this.a = parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public G getG() {
|
||||||
|
return g;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setG(G parameter) {
|
||||||
|
this.g = parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public org.hibernate.test.annotations.cascade.circle.sequence.B getB() {
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setB(org.hibernate.test.annotations.cascade.circle.sequence.B parameter) {
|
||||||
|
this.b = parameter;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,99 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.sequence;
|
||||||
|
|
||||||
|
import org.hibernate.Session;
|
||||||
|
import org.hibernate.testing.DialectChecks;
|
||||||
|
import org.hibernate.testing.FailureExpected;
|
||||||
|
import org.hibernate.testing.RequiresDialectFeature;
|
||||||
|
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
@RequiresDialectFeature(DialectChecks.SupportsSequences.class)
|
||||||
|
public class CascadeCircleSequenceIdTest extends BaseCoreFunctionalTestCase {
|
||||||
|
@Test
|
||||||
|
@FailureExpected( jiraKey = "HHH-5472" )
|
||||||
|
public void testCascade() {
|
||||||
|
A a = new A();
|
||||||
|
org.hibernate.test.annotations.cascade.circle.sequence.B b = new org.hibernate.test.annotations.cascade.circle.sequence.B();
|
||||||
|
org.hibernate.test.annotations.cascade.circle.sequence.C c = new org.hibernate.test.annotations.cascade.circle.sequence.C();
|
||||||
|
D d = new D();
|
||||||
|
E e = new E();
|
||||||
|
F f = new F();
|
||||||
|
G g = new G();
|
||||||
|
H h = new H();
|
||||||
|
|
||||||
|
a.getBCollection().add(b);
|
||||||
|
b.setA(a);
|
||||||
|
|
||||||
|
a.getCCollection().add(c);
|
||||||
|
c.setA(a);
|
||||||
|
|
||||||
|
b.getCCollection().add(c);
|
||||||
|
c.setB(b);
|
||||||
|
|
||||||
|
a.getDCollection().add(d);
|
||||||
|
d.getACollection().add(a);
|
||||||
|
|
||||||
|
d.getECollection().add(e);
|
||||||
|
e.setF(f);
|
||||||
|
|
||||||
|
f.getBCollection().add(b);
|
||||||
|
b.setF(f);
|
||||||
|
|
||||||
|
c.setG(g);
|
||||||
|
g.getCCollection().add(c);
|
||||||
|
|
||||||
|
f.setH(h);
|
||||||
|
h.setG(g);
|
||||||
|
|
||||||
|
Session s;
|
||||||
|
s = openSession();
|
||||||
|
s.getTransaction().begin();
|
||||||
|
try {
|
||||||
|
// Fails: says that C.b is null (even though it isn't). Doesn't fail if you persist c, g or h instead of a
|
||||||
|
s.persist(a);
|
||||||
|
s.flush();
|
||||||
|
} finally {
|
||||||
|
s.getTransaction().rollback();
|
||||||
|
s.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Class[] getAnnotatedClasses() {
|
||||||
|
return new Class[]{
|
||||||
|
A.class,
|
||||||
|
org.hibernate.test.annotations.cascade.circle.sequence.B.class,
|
||||||
|
org.hibernate.test.annotations.cascade.circle.sequence.C.class,
|
||||||
|
D.class,
|
||||||
|
E.class,
|
||||||
|
F.class,
|
||||||
|
G.class,
|
||||||
|
H.class
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.sequence;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No Documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.Entity
|
||||||
|
public class D extends AbstractEntity {
|
||||||
|
private static final long serialVersionUID = 2417176961L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.ManyToMany(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
)
|
||||||
|
private java.util.Set<org.hibernate.test.annotations.cascade.circle.sequence.A> aCollection = new java.util.HashSet<org.hibernate.test.annotations.cascade.circle.sequence.A>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.OneToMany(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
)
|
||||||
|
private java.util.Set<E> eCollection = new java.util.HashSet<E>();
|
||||||
|
|
||||||
|
public java.util.Set<org.hibernate.test.annotations.cascade.circle.sequence.A> getACollection() {
|
||||||
|
return aCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setACollection(
|
||||||
|
java.util.Set<org.hibernate.test.annotations.cascade.circle.sequence.A> parameter) {
|
||||||
|
this.aCollection = parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public java.util.Set<E> getECollection() {
|
||||||
|
return eCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setECollection(
|
||||||
|
java.util.Set<E> parameter) {
|
||||||
|
this.eCollection = parameter;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.sequence;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No Documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.Entity
|
||||||
|
public class E extends AbstractEntity {
|
||||||
|
private static final long serialVersionUID = 1226955558L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.ManyToOne(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, optional = false)
|
||||||
|
private F f;
|
||||||
|
|
||||||
|
public F getF() {
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setF(F parameter) {
|
||||||
|
this.f = parameter;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.sequence;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No Documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.Entity
|
||||||
|
public class F extends AbstractEntity {
|
||||||
|
private static final long serialVersionUID = 1471534025L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.OneToMany(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, mappedBy = "f")
|
||||||
|
private java.util.Set<org.hibernate.test.annotations.cascade.circle.sequence.B> bCollection = new java.util.HashSet<org.hibernate.test.annotations.cascade.circle.sequence.B>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.OneToOne(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
)
|
||||||
|
private H h;
|
||||||
|
|
||||||
|
public java.util.Set<org.hibernate.test.annotations.cascade.circle.sequence.B> getBCollection() {
|
||||||
|
return bCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBCollection(
|
||||||
|
java.util.Set<org.hibernate.test.annotations.cascade.circle.sequence.B> parameter) {
|
||||||
|
this.bCollection = parameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public H getH() {
|
||||||
|
return h;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setH(H parameter) {
|
||||||
|
this.h = parameter;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.sequence;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No Documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.Entity
|
||||||
|
public class G extends AbstractEntity {
|
||||||
|
private static final long serialVersionUID = 325417437L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.OneToMany(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
, mappedBy = "g")
|
||||||
|
private java.util.Set<org.hibernate.test.annotations.cascade.circle.sequence.C> cCollection = new java.util.HashSet<org.hibernate.test.annotations.cascade.circle.sequence.C>();
|
||||||
|
|
||||||
|
public java.util.Set<org.hibernate.test.annotations.cascade.circle.sequence.C> getCCollection() {
|
||||||
|
return cCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCCollection(
|
||||||
|
java.util.Set<org.hibernate.test.annotations.cascade.circle.sequence.C> parameter) {
|
||||||
|
this.cCollection = parameter;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011, Red Hat Inc. or third-party contributors as
|
||||||
|
* indicated by the @author tags or express copyright attribution
|
||||||
|
* statements applied by the authors. All third-party contributions are
|
||||||
|
* distributed under license by Red Hat Inc.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use, modify,
|
||||||
|
* copy, or redistribute it subject to the terms and conditions of the GNU
|
||||||
|
* Lesser General Public License, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this distribution; if not, write to:
|
||||||
|
* Free Software Foundation, Inc.
|
||||||
|
* 51 Franklin Street, Fifth Floor
|
||||||
|
* Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.cascade.circle.sequence;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No Documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.Entity
|
||||||
|
public class H extends AbstractEntity {
|
||||||
|
private static final long serialVersionUID = 1226955562L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No documentation
|
||||||
|
*/
|
||||||
|
@javax.persistence.OneToOne(cascade = {
|
||||||
|
javax.persistence.CascadeType.MERGE, javax.persistence.CascadeType.PERSIST, javax.persistence.CascadeType.REFRESH}
|
||||||
|
)
|
||||||
|
private org.hibernate.test.annotations.cascade.circle.sequence.G g;
|
||||||
|
|
||||||
|
public org.hibernate.test.annotations.cascade.circle.sequence.G getG() {
|
||||||
|
return g;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setG(org.hibernate.test.annotations.cascade.circle.sequence.G parameter) {
|
||||||
|
this.g = parameter;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue