removed special object handling replaced by cascade

master
Markus Kreth 6 years ago
parent 034af401d9
commit 42cba2ce69
  1. 42
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoImpl.java
  2. 20
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Person.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<Person> implements PersonDao {
@ -26,46 +24,6 @@ public class PersonDaoImpl extends AbstractDaoImpl<Person> 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<Contact> contacts = obj.getContacts();
if (contacts != null) {
for (Contact c : contacts) {
persistOrUpdate(c);
}
}
List<Adress> 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<Person> query = entityManager.createNamedQuery(Person.QUERY_FINDLOGIN, Person.class);

@ -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<Adress> 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<Attendance> 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<Contact> 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<GroupDef> 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<Relative> 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<Relative> relatives2;
@ManyToMany(fetch = FetchType.EAGER, mappedBy = "persons")

Loading…
Cancel
Save