From 42cba2ce692dd71235c8818f4ac40b3fdaa47697 Mon Sep 17 00:00:00 2001 From: Markus Kreth Date: Sat, 17 Aug 2019 12:18:31 +0200 Subject: [PATCH] removed special object handling replaced by cascade --- .../vaadinclubhelper/dao/PersonDaoImpl.java | 42 ------------------- .../vaadinclubhelper/data/Person.java | 20 +++++---- 2 files changed, 13 insertions(+), 49 deletions(-) diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoImpl.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoImpl.java index bb0e730..276aaa8 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoImpl.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoImpl.java @@ -12,10 +12,8 @@ import org.springframework.transaction.annotation.Transactional; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Adress; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Contact; -import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.EntityAccessor; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Relation; -import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Startpass; @Repository public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao { @@ -26,46 +24,6 @@ public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao super(Person.class); } - @Override - @Transactional - public void save(Person obj) { - checkSubEntities(obj); - super.save(obj); - } - - @Transactional - public void checkSubEntities(Person obj) { - Startpass startPass = obj.getStartpass(); - if (startPass != null) { - persistOrUpdate(startPass); - } - List contacts = obj.getContacts(); - if (contacts != null) { - for (Contact c : contacts) { - persistOrUpdate(c); - } - } - List adresses = obj.getAdresses(); - if (adresses != null) { - for (Adress a : adresses) { - persistOrUpdate(a); - } - } - } - - @Transactional - public void persistOrUpdate(EntityAccessor c) { - Date now = new Date(); - c.setChanged(now); - if (entityManager.contains(c) || c.hasValidId()) { - entityManager.merge(c); - } - else { - c.setCreated(now); - entityManager.persist(c); - } - } - @Override public Person findLoginUser(String username, String password) { TypedQuery query = entityManager.createNamedQuery(Person.QUERY_FINDLOGIN, Person.class); diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Person.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Person.java index e829042..80fd395 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Person.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Person.java @@ -8,6 +8,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.Inheritance; @@ -52,33 +53,38 @@ public class Person extends BaseEntity implements Serializable { private Integer gender; - @OneToOne(mappedBy = "person") + @OneToOne(mappedBy = "person", cascade = CascadeType.ALL, orphanRemoval = true) private Startpass startpass; // bi-directional many-to-one association to Adress - @OneToMany(mappedBy = "person") + @OneToMany(mappedBy = "person", cascade = { CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, + CascadeType.REFRESH }) private List adresses; // bi-directional many-to-one association to Attendance - @OneToMany(mappedBy = "person") + @OneToMany(mappedBy = "person", cascade = { CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, + CascadeType.REFRESH }) private List attendances; // bi-directional many-to-one association to Contact - @OneToMany(mappedBy = "person") + @OneToMany(mappedBy = "person", cascade = { CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, + CascadeType.REFRESH }) private List contacts; // bi-directional many-to-many association to Persongroup - @ManyToMany(targetEntity = GroupDef.class, fetch = FetchType.EAGER) + @ManyToMany(targetEntity = GroupDef.class, fetch = FetchType.EAGER, cascade = { CascadeType.REFRESH }) @JoinTable(name = "persongroup", joinColumns = { @JoinColumn(name = "person_id") }, inverseJoinColumns = { @JoinColumn(name = "group_id") }) private Set groups; // bi-directional many-to-one association to Relative - @OneToMany(mappedBy = "person1Bean") + @OneToMany(mappedBy = "person1Bean", cascade = { CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, + CascadeType.REFRESH }) private List relatives1; // bi-directional many-to-one association to Relative - @OneToMany(mappedBy = "person2Bean") + @OneToMany(mappedBy = "person2Bean", cascade = { CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, + CascadeType.REFRESH }) private List relatives2; @ManyToMany(fetch = FetchType.EAGER, mappedBy = "persons")