日期:2014-05-19  浏览次数:20769 次

spring DATA JPA 带条件分页查询的问题

public class FinancialLoanInfo implements java.io.Serializable {

// Fields

/**
 * 
 */
private static final long serialVersionUID = -5163416181325490447L;
private BigDecimal loanId;
private FinancialUsers userId;
        //.....

}

在根据日期,状态查询FinancialLoanInfo 对象的时候,程序会自动查出关联的FinancialUsers这个对象的所有记录。

现在问题是
1.带参数,查询分页的方法能不能用JPA写,现在是查询所有的记录,在内存里处理的
2.如果是用JPA写,怎么关闭延迟加载。FinancialUsers

------最佳解决方案--------------------
延迟加载

@OneToOne(fetch = FetchType.LAZY)


分页查询

            String jpql = "select * from XXX where name like :name"
            Query query = em.createQuery(jpql);
           query.setParameter("name", name+"%");

            // 设置查询结果的结束记录数
            int maxResults = pageSize;
            query.setMaxResults(maxResults);

            // 设置查询结果的开始记录数(从0开始计数)
            int firstResult = (pageNo - 1) * pageSize;
            query.setFirstResult(firstResult);

           return query.getResultList();

------其他解决方案--------------------
jpa中OneToOne和ManyToOne的映射关系默认是不延迟加载的只有OneToMany和ManyToMany默认才是延迟加载