package com.jspxcms.core.repository.impl; import java.util.Collections; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.apache.commons.lang3.ArrayUtils; import org.hibernate.ejb.QueryHints; import com.jspxcms.core.domain.User; import com.jspxcms.core.domaindsl.QUser; import com.jspxcms.core.repository.UserDaoPlus; import com.mysema.query.jpa.impl.JPAQuery; import com.mysema.query.types.expr.BooleanExpression; /** * UserDaoImpl * * @author liufang * */ public class UserDaoImpl implements UserDaoPlus { public List<User> findByUsername(String[] usernames) { if (ArrayUtils.isEmpty(usernames)) { return Collections.emptyList(); } JPAQuery query = new JPAQuery(this.em); query.setHint(QueryHints.HINT_CACHEABLE, true); QUser user = QUser.user; query.from(user); BooleanExpression exp = user.username.eq(usernames[0]); for (int i = 1, len = usernames.length; i < len; i++) { exp = exp.or(user.username.eq(usernames[i])); } query.where(exp); return query.list(user); } private EntityManager em; @PersistenceContext public void setEm(EntityManager em) { this.em = em; } }