From 81d829f74e8927eec58f90ac2194e5ff87cf2aa5 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Thu, 24 Nov 2016 02:21:54 +1300 Subject: [PATCH] #894 - ENH: Add support for @OneToMany orphanRemoval = true (which is the same as @PrivateOwned) --- .../server/deploy/parse/AnnotationAssocManys.java | 4 ++++ src/test/java/com/avaje/tests/model/basic/TSMaster.java | 5 +---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/AnnotationAssocManys.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/AnnotationAssocManys.java index cb741dd74..94cdfbd0f 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/AnnotationAssocManys.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/AnnotationAssocManys.java @@ -55,6 +55,10 @@ class AnnotationAssocManys extends AnnotationParser { OneToMany oneToMany = get(prop, OneToMany.class); if (oneToMany != null) { readToOne(oneToMany, prop); + if (oneToMany.orphanRemoval()) { + prop.setModifyListenMode(ModifyListenMode.REMOVALS); + prop.getCascadeInfo().setDelete(true); + } PrivateOwned privateOwned = get(prop, PrivateOwned.class); if (privateOwned != null) { prop.setModifyListenMode(ModifyListenMode.REMOVALS); diff --git a/src/test/java/com/avaje/tests/model/basic/TSMaster.java b/src/test/java/com/avaje/tests/model/basic/TSMaster.java index 9de0b7b0d..cf06de99c 100644 --- a/src/test/java/com/avaje/tests/model/basic/TSMaster.java +++ b/src/test/java/com/avaje/tests/model/basic/TSMaster.java @@ -1,7 +1,5 @@ package com.avaje.tests.model.basic; -import com.avaje.ebean.annotation.PrivateOwned; - import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -29,8 +27,7 @@ public class TSMaster { boolean active; - @OneToMany(cascade = CascadeType.ALL, mappedBy = "master") - @PrivateOwned + @OneToMany(cascade = CascadeType.ALL, mappedBy = "master", orphanRemoval = true) List details; public Integer getId() {