package com.gffny.ldrbrd.account; import javax.persistence.*; import javax.inject.Inject; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import org.springframework.security.crypto.password.PasswordEncoder; @Repository @Transactional(readOnly = true) public class AccountRepository { @PersistenceContext private EntityManager entityManager; @Inject private PasswordEncoder passwordEncoder; @Transactional public Account save(Account account) { account.setPassword(passwordEncoder.encode(account.getPassword())); entityManager.persist(account); return account; } public Account findByEmail(String email) { try { return entityManager.createNamedQuery(Account.FIND_BY_EMAIL, Account.class) .setParameter("email", email) .getSingleResult(); } catch (PersistenceException e) { return null; } } }