From cb1c8cb3e270db5bd4e4b8c09ffbb0118b6a468c Mon Sep 17 00:00:00 2001 From: eugenp Date: Sat, 18 May 2013 18:03:52 +0300 Subject: [PATCH] bidrectional foregin key one to one --- .../baeldung/spring/persistence/model/Child.java | 6 +----- .../baeldung/spring/persistence/model/Parent.java | 4 ++-- .../ParentServicePersistenceIntegrationTest.java | 13 ++++++++++++- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/spring-hibernate4/src/main/java/org/baeldung/spring/persistence/model/Child.java b/spring-hibernate4/src/main/java/org/baeldung/spring/persistence/model/Child.java index e2382dfe11..8589a2f497 100644 --- a/spring-hibernate4/src/main/java/org/baeldung/spring/persistence/model/Child.java +++ b/spring-hibernate4/src/main/java/org/baeldung/spring/persistence/model/Child.java @@ -3,11 +3,9 @@ package org.baeldung.spring.persistence.model; import java.io.Serializable; import javax.persistence.Entity; -import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.OneToOne; -import javax.persistence.PrimaryKeyJoinColumn; @Entity public class Child implements Serializable { @@ -16,8 +14,7 @@ public class Child implements Serializable { @GeneratedValue private long id; - @OneToOne(fetch = FetchType.LAZY) - @PrimaryKeyJoinColumn + @OneToOne(mappedBy = "child") private Parent parent; public Child() { @@ -34,7 +31,6 @@ public class Child implements Serializable { this.id = id; } - @OneToOne(mappedBy = "child") public Parent getParent() { return parent; } diff --git a/spring-hibernate4/src/main/java/org/baeldung/spring/persistence/model/Parent.java b/spring-hibernate4/src/main/java/org/baeldung/spring/persistence/model/Parent.java index c936e27dea..4fd7af6b09 100644 --- a/spring-hibernate4/src/main/java/org/baeldung/spring/persistence/model/Parent.java +++ b/spring-hibernate4/src/main/java/org/baeldung/spring/persistence/model/Parent.java @@ -16,6 +16,8 @@ public class Parent implements Serializable { @GeneratedValue private long id; + @OneToOne(cascade = CascadeType.ALL) + @JoinColumn(name = "child_fk") private Child child; public Parent() { @@ -38,8 +40,6 @@ public class Parent implements Serializable { this.id = id; } - @OneToOne(cascade = CascadeType.ALL) - @JoinColumn(name = "child_fk") public Child getChild() { return child; } diff --git a/spring-hibernate4/src/test/java/org/baeldung/spring/persistence/service/ParentServicePersistenceIntegrationTest.java b/spring-hibernate4/src/test/java/org/baeldung/spring/persistence/service/ParentServicePersistenceIntegrationTest.java index 7f7060f0b9..126066a941 100644 --- a/spring-hibernate4/src/test/java/org/baeldung/spring/persistence/service/ParentServicePersistenceIntegrationTest.java +++ b/spring-hibernate4/src/test/java/org/baeldung/spring/persistence/service/ParentServicePersistenceIntegrationTest.java @@ -28,7 +28,7 @@ public class ParentServicePersistenceIntegrationTest { } @Test - public final void whenEntityIsCreated_thenNoExceptions() { + public final void whenOneToOneEntitiesAreCreated_thenNoExceptions() { final Child childEntity = new Child(); childService.create(childEntity); @@ -42,4 +42,15 @@ public class ParentServicePersistenceIntegrationTest { System.out.println("Parent - child = " + service.findOne(parentEntity.getId()).getChild()); } + @Test + public final void whenChildIsDeleted_thenDataException() { + final Child childEntity = new Child(); + childService.create(childEntity); + + final Parent parentEntity = new Parent(childEntity); + service.create(parentEntity); + + childService.delete(childEntity); + } + }