package com.springone.myrestaurants.data; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import com.springone.myrestaurants.domain.UserAccount; @Repository public class UserAccountRepository { @PersistenceContext private EntityManager entityManager; @Transactional public UserAccount findUserAccount(Long id) { if (id == null) return null; final UserAccount userAccount = entityManager.find(UserAccount.class, id); if (userAccount != null) { userAccount.persist(); } return userAccount; } @Transactional public UserAccount findByName(String name) { if (name == null) return null; Query q = entityManager.createQuery("SELECT u FROM UserAccount u WHERE u.userName = :username"); q.setParameter("username", name); java.util.List resultList = q.getResultList(); if (resultList.size() > 0) { final UserAccount userAccount = (UserAccount) resultList.get(0); if (userAccount != null) { userAccount.persist(); } return userAccount; } return null; } @SuppressWarnings("unchecked") @Transactional(readOnly=true) public List<UserAccount> findAllUserAccounts() { return entityManager.createQuery("select o from UserAccount o").getResultList(); } @SuppressWarnings("unchecked") @Transactional(readOnly=true) public List<UserAccount> findUserAccountEntries(int firstResult, int maxResults) { return entityManager.createQuery("select o from UserAccount o").setFirstResult(firstResult).setMaxResults(maxResults).getResultList(); } @Transactional public long countUserAccounts() { return ((Number) entityManager.createQuery("select count(o) from UserAccount o").getSingleResult()).longValue(); } @Transactional public void persist(UserAccount userAccount) { this.entityManager.persist(userAccount); this.entityManager.flush(); userAccount.persist(); } @Transactional public UserAccount merge(UserAccount userAccount) { userAccount.persist(); UserAccount merged = this.entityManager.merge(userAccount); this.entityManager.flush(); return merged; } }