2 xsh744497 xsh744497 于 2014.09.29 18:47 提问

Spring data JPA使用CriteriaQuery进行不定条件查询时,发起了多次查询

//PlatformSecurityUser为账户信息实体,和用户基本信息platformSysUser存在一对一的映射关系,fetchType为lazy

//在获取账户信息的同时,希望一次获取用户基本信息-platformSysUser
import javax.persistence.*;
import javax.persistence.criteria.*;
import java.util.ArrayList;
public class CustomPlatformSecurityUserDaoImpl implements CustomPlatformSecurityUserDao {

@PersistenceContext
EntityManager entityManager;
@Override
public Page<PlatformSecurityUser> dynamicQuery(PlatformSysUserAccountQueryConditionVO queryConditionVO, Pageable pageable) {
    CriteriaBuilder criteriaBuilder=entityManager.getCriteriaBuilder();
    CriteriaQuery<PlatformSecurityUser> query=criteriaBuilder.createQuery(PlatformSecurityUser.class);
    Root< PlatformSecurityUser> root = query.from(PlatformSecurityUser.class);
    root.fetch("platformSysUser");
    entityManager.createQuery(query).getResultList();
    return null;
}

}
现在出现的问题是resultList里面有多少账户信息数据,就发起了多少次根据ID获取账户信息的查询,现在我希望只有一次查询,就是日志中的第一条SQL,请各位哥哥姐姐帮下忙。打印的日志如下(sql我进行过简化,把 里面的AS去掉了):
Hibernate: select a.id, c.id, a.IS_DEL, a.CREATE_TIME, a.EFF_TIME, a.EXP_TIME, a.LAST_LOGIN_TIME, a.LOGIN_NAME, a.PASSWORD, a.PLATFORM_SYS_USER_ID, a.STATUS, a.TOKEN, c.IS_DEL, c.CREDENTIAL_NUMBER, c.CREDENTIAL_TYPE, c.EMAIL, c.MOBILE, c.NAME, c.SEX, c.USER_NUMBER, c.USER_TYPE from PLATFORM_SECURITY_USER a inner join PLATFORM_SYS_USER b on a.PLATFORM_SYS_USER_ID=b.id inner join PLATFORM_SYS_USER c on a.PLATFORM_SYS_USER_ID=c.id
Hibernate: select a.id, a.IS_DEL, a.CREATE_TIME, a.EFF_TIME, a.EXP_TIME, a.LAST_LOGIN_TIME, a.LOGIN_NAME, a.PASSWORD, a.PLATFORM_SYS_USER_ID, a.STATUS, a.TOKEN from PLATFORM_SECURITY_USER a where a.PLATFORM_SYS_USER_ID=?
Hibernate: select a.id, a.IS_DEL, a.CREATE_TIME, a.EFF_TIME, a.EXP_TIME, a.LAST_LOGIN_TIME, a.LOGIN_NAME, a.PASSWORD, a.PLATFORM_SYS_USER_ID, a.STATUS, a.TOKEN from PLATFORM_SECURITY_USER a where a.PLATFORM_SYS_USER_ID=?
Hibernate: select a.id, a.IS_DEL, a.CREATE_TIME, a.EFF_TIME, a.EXP_TIME, a.LAST_LOGIN_TIME, a.LOGIN_NAME, a.PASSWORD, a.PLATFORM_SYS_USER_ID, a.STATUS, a.TOKEN from PLATFORM_SECURITY_USER a where a.PLATFORM_SYS_USER_ID=?
Hibernate: select a.id, a.IS_DEL, a.CREATE_TIME, a.EFF_TIME, a.EXP_TIME, a.LAST_LOGIN_TIME, a.LOGIN_NAME, a.PASSWORD, a.PLATFORM_SYS_USER_ID, a.STATUS, a.TOKEN from PLATFORM_SECURITY_USER a where a.PLATFORM_SYS_USER_ID=?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
spring data jpa 实现多条件复杂查询及多表联查
最近发现JPA在处理单表时,很方便,但多表就比较复杂了。今天写一下端午这两天琢磨的多条件查询,还有多表联查。maven依赖啊,配置,继承写法等知识点不展开说了,之前写过一篇文章: spring boot 配置及使用 spring data jpa这里说一下更新的地方:JPA的配置###################################################### ###sp...
Spring Data JPA进阶——Specifications和Querydsl
Spring Data JPA进阶——Specifications和Querydsl本篇介绍一下Spring Data JPA中能为数据访问程序的开发带来更多便利的特性,我们知道,Spring Data repository的配置很简单,一个典型的repository像下面这样:public interface CustomerRepository extends JpaRepository<Cus
spring data JPA 中带查询条件的分页in的用法
spring data JPA 中带查询条件的分页in的用法in的用法和equal,like,or的用法不同,以下给出in的用法!@Override public Predicate toPredicate(Root<Person> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
JPA进行CriteriaQuery进行查询注意事项
1.pojo类 @Entity @Table(name = "report_workload") @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) @JsonIdentityInfo(generator = JSOGGenerator.class) public class ReportWorkload { pr
Spring Data JPA 实现带条件查询带group by的分页查询
DAO层:@Repository public interface DeviceMapper extends JpaRepository&amp;lt;DeviceManager, String&amp;gt;,JpaSpecificationExecutor&amp;lt;DeviceManager&amp;gt; { //带条件的分页查询 public Page&amp;lt;DeviceManager&amp;g...
spring data jpa 的 in 查询 Specification 实现
只是一个简单需求:  查询所有部门id 属于  idList 的数据 Page page = workWeightRepository.findAll(new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, Crite
spring data JPA 中带查询条件的in的用法
public Page&amp;lt;Material&amp;gt; findByMaterialList(Long subjectId,Long subjectGroupId, Material material, Pageable pageable) { Subject subject = subjectRelationRepository.findOne(subjectId); long[] id...
spring data jpa 条件分页查询
PS:一半转载,一半自己的用例 作者:javaniu 链接:https://www.zhihu.com/question/37873032/answer/73991650 来源:知乎 著作权归作者所有,转载请联系作者获得授权。(PS:暂时没有知乎账号,所以没有联系原作者,请原作者见谅!) springdata jpa总结的查询方法有如下: findOneByName按用户名查询
Spring Data Jpa系列教程(四)--------高级查询
    本章介绍一下Spring Data Jpa高级查询,上一章讲的JPQL,JPQL使用起来非常方便,但是如果SQL有一个词不小心写错了,只有在程序运行时才能发现错误在哪,这是一个弊端,如果想要在编译器发现错误该怎么做呢,答案是使用Spring Data Jpa高级查询。    一、Criteria查询@PersistenceContext private EntityManager ent...
Spring data jpa 多条件查询(条件为时间)
直接代码附上:SimpleDateFormat sdfmat = new SimpleDateFormat(&quot;yyyy-MM-dd HH:mm:ss&quot;);try { if (StringUtils.isNotEmpty(startTime) &amp;amp;&amp;amp; StringUtils.isNotEmpty(endTime)) {     predicates.add(cb.bet...