JPA多条件查询(不适用Query)
有时候我们的条件是动态,这时就不适合在dao层写接口了
但是我们可以使用EntityManager来实现,如以下完整代码
StringBuffer mBuffer = new StringBuffer("and ("); for(Long l:groupids) { mBuffer.append("m2.groupid="+l+" or "); } String subSql = mBuffer.substring(0, mBuffer.length()-4)+")"; String hql = "select m1 from my028888Userinfo m1,my028888Usergroupinfo m2 where m1.userid=m2.userid "+subSql; Query createQuery = getEntityManager().createQuery(hql); createQuery.setFirstResult(0); createQuery.setMaxResults(100); @SuppressWarnings("unchecked") List<My028888Userinfo> list = createQuery.getResultList();
上面使用的是hql查询,您也可以使用原生的sql查询
EntityManager可以通过注入实现,如下主要的代码片段
@Transactional public abstract class BaseServiceImpl<T extends BaseEntity, ID extends Serializable> implements IBaseService<T, ID> { public abstract IBaseDao<T, ID> getBaseDao(); @PersistenceContext private EntityManager entityManager;
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情