public Customer login(String name) {
EntityManager em = begin();
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Customer> q = cb.createQuery(Customer.class);
Customer customer = null;
Root<Customer> root = q.from(Customer.class);
ParameterExpression<String> pName = cb.parameter(String.class);
q.where(cb.equal(root.get(Customer_.name), pName));
List<Customer> customers = em.createQuery(q)
.setParameter(pName, name)
.getResultList();
if (customers.isEmpty()) {
Customer newCustomer = new Customer();
newCustomer.setName(name);
em.persist(newCustomer);
customer = newCustomer;
} else {
customer = customers.get(0);
}