rewrote query with criteria api

This commit is contained in:
Athou
2013-04-12 10:29:34 +02:00
parent ba0a749a5d
commit b459975522
2 changed files with 10 additions and 7 deletions

View File

@@ -4,8 +4,11 @@ import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.persistence.NoResultException;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import com.commafeed.backend.model.User;
import com.commafeed.backend.model.User_;
import com.commafeed.backend.services.PasswordEncryptionService;
@Stateless
@@ -16,12 +19,16 @@ public class UserDAO extends GenericDAO<User> {
PasswordEncryptionService encryptionService;
public User findByName(String name) {
TypedQuery<User> query = em.createNamedQuery("User.byName", User.class);
query.setParameter("name", name.toLowerCase());
CriteriaQuery<User> query = builder.createQuery(getType());
Root<User> root = query.from(getType());
query.where(builder.equal(builder.lower(root.get(User_.name)),
name.toLowerCase()));
TypedQuery<User> q = em.createQuery(query);
User user = null;
try {
user = query.getSingleResult();
user = q.getSingleResult();
} catch (NoResultException e) {
user = null;
}

View File

@@ -5,10 +5,6 @@
http://java.sun.com/xml/ns/persistence/orm
http://java.sun.com/xml/ns/persistence/orm_2_0.xsd">
<named-query name="User.byName">
<query>select u FROM User u WHERE lower(u.name)=:name</query>
</named-query>
<named-query name="EntryStatus.unreadCounts">
<query>select s.subscription.id, count(s) from FeedEntryStatus s where s.subscription.user=:user and s.read=false group by s.subscription.id</query>
</named-query>