HHH-9460 - Removing non-optional bidirectional @OneToOne association with cascade
This commit is contained in:
parent
20500f17ae
commit
f2f6a08853
|
@ -0,0 +1,106 @@
|
|||
/*
|
||||
* 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.onetoone.optional;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.OneToOne;
|
||||
|
||||
import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase;
|
||||
|
||||
import org.hibernate.testing.FailureExpected;
|
||||
import org.junit.Test;
|
||||
|
||||
import static javax.persistence.CascadeType.ALL;
|
||||
import static org.hibernate.testing.transaction.TransactionUtil.doInJPA;
|
||||
|
||||
/**
|
||||
* @author Vlad Mihalcea
|
||||
*/
|
||||
public class BidirectionalOptionalOneToOneTest
|
||||
extends BaseEntityManagerFunctionalTestCase {
|
||||
|
||||
@Override
|
||||
protected Class<?>[] getAnnotatedClasses() {
|
||||
return new Class<?>[] {
|
||||
Parent.class,
|
||||
Child.class
|
||||
};
|
||||
}
|
||||
|
||||
@Test
|
||||
@FailureExpected( jiraKey = "HHH-9460" )
|
||||
public void test() {
|
||||
|
||||
doInJPA( this::entityManagerFactory, entityManager -> {
|
||||
Parent a = new Parent();
|
||||
a.id = 1L;
|
||||
Child b = new Child();
|
||||
b.id = 1L;
|
||||
a.setChild(b);
|
||||
b.setParent(a);
|
||||
|
||||
entityManager.persist(a);
|
||||
} );
|
||||
|
||||
doInJPA( this::entityManagerFactory, entityManager -> {
|
||||
Parent a = entityManager.find(Parent.class, 1L);
|
||||
|
||||
entityManager.remove(a);
|
||||
} );
|
||||
}
|
||||
|
||||
@javax.persistence.Entity
|
||||
public static class Parent {
|
||||
|
||||
@Id
|
||||
@Column(unique = true, nullable = false)
|
||||
private Long id;
|
||||
|
||||
@OneToOne(optional = false, mappedBy = "parent", cascade = ALL)
|
||||
private Child child;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public Child getChild() {
|
||||
return child;
|
||||
}
|
||||
|
||||
public void setChild(Child child) {
|
||||
this.child = child;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@javax.persistence.Entity
|
||||
public static class Child {
|
||||
|
||||
@Id
|
||||
@Column(unique = true, nullable = false)
|
||||
private Long id;
|
||||
|
||||
@OneToOne(optional = false)
|
||||
@JoinColumn(nullable = false)
|
||||
private Parent parent;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public Parent getParent() {
|
||||
return parent;
|
||||
}
|
||||
|
||||
public void setParent(Parent parent) {
|
||||
this.parent = parent;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue