package com.book.healthapp.repositories; import java.util.List; import javax.persistence.TypedQuery; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.book.healthapp.domain.User; @Repository @Transactional(propagation=Propagation.MANDATORY) public class UserDAOImpl implements UserDAO { private SessionFactory sessionFactory; @Autowired public UserDAOImpl(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } @SuppressWarnings("unchecked") @Override public List<User> findByEmail(String email) { Session session = this.sessionFactory.getCurrentSession(); TypedQuery<User> query = session.getNamedQuery("findByEmail"); query.setParameter("email", email); // Query query = session.getNamedQuery("findByEmail"); // query.setString("email", email); return query.getResultList(); } @SuppressWarnings("unchecked") @Override public List<User> findByEmailAndPassword(String email, String password) { Session session = this.sessionFactory.getCurrentSession(); TypedQuery<User> query = session.getNamedQuery("findByEmailAndPassword"); query.setParameter("email", email); query.setParameter("password", password); return query.getResultList(); } @Override public User save(User user) { Session session = this.sessionFactory.openSession(); session.save(user); session.close(); return user; } @Override public void update(User user) { // Session session = this.sessionFactory.openSession(); // User persistentUser = (User) session.load(User.class, new Integer(user.getId())); // Transaction tx = session.beginTransaction(); // persistentUser.setFirstName(user.getFirstname()); // persistentUser.setLastname(user.getLastname()); // session.update(persistentUser); // tx.commit(); // Session session = this.sessionFactory.openSession(); // Transaction tx1 = session.beginTransaction(); // User persistentUser = (User) session.load(User.class, new Integer(user.getId())); // tx1.commit(); // Transaction tx2 = session.beginTransaction(); // user.setEmail(persistentUser.getEmail()); // user.setPassword(persistentUser.getPassword()); // session.merge(user); // tx2.commit(); } }