PersonDao stores SubEntities (Startpass, Contact)

master
Markus Kreth 7 years ago
parent ff446f4a5c
commit 855856754f
  1. 30
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoImpl.java

@ -1,10 +1,15 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.dao;
import java.util.List;
import javax.persistence.TypedQuery;
import org.springframework.stereotype.Repository;
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.Startpass;
@Repository
public class PersonDaoImpl extends AbstractDaoImpl<Person> implements PersonDao {
@ -13,6 +18,31 @@ public class PersonDaoImpl extends AbstractDaoImpl<Person> implements PersonDao
super(Person.class);
}
@Override
public void save(Person obj) {
checkSubEntities(obj);
super.save(obj);
}
public void checkSubEntities(Person obj) {
Startpass startPass = obj.getStartpass();
if (startPass != null && startPass.hasValidId() == false) {
persistIfNew(startPass);
}
List<Contact> contacts = obj.getContacts();
if (contacts != null) {
for (Contact c : contacts) {
persistIfNew(c);
}
}
}
public void persistIfNew(EntityAccessor c) {
if (c.hasValidId() == false) {
entityManager.persist(c);
}
}
@Override
public Person findLoginUser(String username, String password) {
TypedQuery<Person> query = entityManager.createNamedQuery(Person.QUERY_FINDLOGIN, Person.class);

Loading…
Cancel
Save