jpa/hibernate @onetomany 使用left join 添加多条件,可以使用过滤器filters (with-clause not allowed on fetched associations; use filters异常信息)
package com.ipinyou.mip.dataAsset.campaignManagement.entity; import com.ipinyou.mip.utils.NumberUtils;
import com.ipinyou.mip.utils.StringHelper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.apache.commons.lang3.builder.HashCodeExclude;
import org.hibernate.annotations.Filter; import javax.persistence.*; import java.text.DecimalFormat;
import java.util.HashSet;
import java.util.Set; import static javax.persistence.FetchType.EAGER;
import static javax.persistence.FetchType.LAZY; @Data
@Entity
@Table(name = "campaign_dashboard_dimension")
@ToString
@EqualsAndHashCode
public class CampaignDashboardDimensionDo { @Id
private Long id; @Transient
private Double impRate = 1.0;
@Column(name = "3_reach")
private Double reach3;
@Column(name = "1_reach")
private Double reach1;
private Long campaignId;
@OneToMany(fetch = LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "campaign_dashboard_dimension_id")
@org.hibernate.annotations.OrderBy(clause = "imp desc")
@Filter(name = "dimension",condition = "dimension_type=:dimension ")
private Set<CampaignDashboardDimensionDetailDo> campaignDashboardDimensionDetailDo = new HashSet<>(); }
one
package com.ipinyou.mip.dataAsset.campaignManagement.entity; import com.ipinyou.mip.utils.NumberUtils;
import com.ipinyou.mip.utils.StringHelper;
import lombok.Data;
import lombok.ToString;
import org.hibernate.annotations.FilterDef;
import org.hibernate.annotations.OrderBy;
import org.hibernate.annotations.ParamDef;
import org.hibernate.annotations.Where; import javax.persistence.*;
import java.text.DecimalFormat; import static javax.persistence.FetchType.EAGER; @Data
@Entity
@Table(name = "campaign_dashboard_dimension_detail")
@ToString
@FilterDef(name="dimension", parameters=@ParamDef(name="dimension",type="java.lang.String"))
public class CampaignDashboardDimensionDetailDo {
@Id
private Long id;
private Long version;
private java.sql.Timestamp lastModified;
private String removed; private Long imp;
private Double reachRate;
private String dimensionName;
private String dimensionType;
private Long uv;
private Long click;
private Double ta = 0.0; @Transient
private Double impRate;
@Transient
private Double diffTa;
@Transient
private Double diffReach3 = 0.0;
@Transient
private Double targetTa = 0.0;
@Transient
private Double targetReach3 = 0.0; }
many
public List<CampaignDashboardDimensionDo> getCategoryData(List<String> displayType, String dimension, String source, Long campaignId) {
List<CampaignDashboardDimensionDo> resultList=new ArrayList<>();
if (displayType==null||displayType.isEmpty()){
return resultList;
}
for (String type:displayType ){
StringBuilder sb = new StringBuilder();
sb.append("select cdd from CampaignDashboardDimensionDo as cdd left join fetch cdd.campaignDashboardDimensionDetailDo as cddd where cdd.campaignId=:campaignId and cdd.source=:source" +
" and cdd.logDate=(select max(logDate) from CampaignDashboardDimensionDo where campaignId=:campaignId and source=:source and displayType=:type) and cdd.displayType=:type");
Filter filter = entityManager.unwrap(Session.class).enableFilter("dimension");
filter.setParameter("dimension",dimension);
TypedQuery<CampaignDashboardDimensionDo> query = entityManager.createQuery(sb.toString(), CampaignDashboardDimensionDo.class);
query.setParameter("type",type);
query.setParameter("source", source);
query.setParameter("campaignId", campaignId);
List<CampaignDashboardDimensionDo> list = query.getResultList();
Set<CampaignDashboardDimensionDo> set=new HashSet<>(list);
resultList.addAll(set);
}
return resultList;
}
查询代码
jpa/hibernate @onetomany 使用left join 添加多条件,可以使用过滤器filters (with-clause not allowed on fetched associations; use filters异常信息)的更多相关文章
- JPA(Hibernate) @OneToMany 两种例子
环境:Spring Data Jpa,hibernate或者其他jpa实现也是一样的:Spring Boot 场景:User和Role,一个User要对应多个Role. 第一种方式,没有中间关系表,直 ...
- Spring Data Jpa(Hibernate) OneToMany
这个其实非常简单.假设有topic 和 subscriber两个实体类,不考虑关联关系,则连个类的代码如下: /** * Created by csonezp on 2017/8/31. */ @En ...
- Hibernate @OneToMany等注解设置查询过滤条件等
1.如实体PdOrg对象中有users对象,数据库user表有字段DEL_FLAG(0:删除:1:未删除): private List<User> users= new ArrayList ...
- hibernate @OneToMany等注解设置查询过滤条件
如实体PdOrg对象中有users对象,数据库user表有字段DEL_FLAG(0:删除:1:未删除): private List<User> users= new ArrayList&l ...
- Spring Boot 2.x 之 Spring Data JPA, Hibernate 5
1. Spring Boot常用配置项 基于Spring Boot 2.0.6.RELEASE 1.1 配置属性类 spring.jpa前缀的相关配置项定义在JpaProperties类中, 1.2 ...
- Spring + SpringMVC + Druid + JPA(Hibernate impl) 给你一个稳妥的后端解决方案
最近手头的工作不太繁重,自己试着倒腾了一套用开源框架组建的 JavaWeb 后端解决方案. 感觉还不错的样子,但实践和项目实战还是有很大的落差,这里只做抛砖引玉之用. 项目 git 地址:https: ...
- 五、spring boot 1.5.4 集成 jpa+hibernate+jdbcTemplate
1.pom添加依赖 <!-- spring data jpa,会注入tomcat jdbc pool/hibernate等 --> <dependency> <group ...
- Spring Boot + Jpa(Hibernate) 架构基本配置
本文转载自:https://blog.csdn.net/javahighness/article/details/53055149 1.基于springboot-1.4.0.RELEASE版本测试 2 ...
- SpringBoot + Jpa(Hibernate) 架构基本配置
1.基于springboot-1.4.0.RELEASE版本测试 2.springBoot + Hibernate + Druid + Mysql + servlet(jsp) 一.maven的pom ...
随机推荐
- Blink: How Alibaba Uses Apache Flink
This is a guest post from Xiaowei Jiang, Senior Director of Alibaba’s search infrastructure team. Th ...
- Dispatch Group
Dispatch Group A group of tasks that you monitor as a single unit. Overview Groups allow you to aggr ...
- spring中基于注解使用AOP
本文内容:spring中如何使用注解实现面向切面编程,以及如何使用自定义注解. 一个场景 比如用户登录,每个请求发起之前都会判断用户是否登录,如果每个请求都去判断一次,那就重复地做了很多事情,只要是有 ...
- Linux内存管理 (8)malloc
专题:Linux内存管理专题 关键词:malloc.brk.VMA.VM_LOCK.normal page.special page. 每章问答: malloc()函数是C函数库封装的一个核心函数,对 ...
- UML 教程
UML 教程 关键词:部署图, 组件图, 包图, 类图, 复合结构图, 对象图, 活动图, 状态机图, 用例图, 通信图, 交互概述图, 时序图, 时间图 简介 部署图 组件图 包图 类图 复合结构图 ...
- js 对日期处理
// 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占 ...
- [Alpha阶段]第二次Scrum Meeting
Scrum Meeting博客目录 [Alpha阶段]第二次Scrum Meeting 基本信息 名称 时间 地点 时长 第二次Scrum Meeting 19/04/04 大运村寝室6楼 90min ...
- 使用with语句优化pymysql的操作
一.with语句的好处 with语句的好处在于,它可以自动帮我们释放上下文,就比如文件句柄的操作,如果你不使用with语句操作,你要先open一个文件句柄,使用完毕后要close这个文件句柄,而使用w ...
- JS Array.reduce 对象属性累加
Array reduce() 方法 ,无非就是 计算数组元素 相加后的总和 ,看网上给的Demo 全是 [1,2,3,4,6].reduce 这种基本用法, 本次我将使用 reduce 实现 数组 ...
- ☆ [洛谷P2633] Count on a tree 「树上主席树」
题目类型:主席树+\(LCA\) 传送门:>Here< 题意:给出一棵树.每个节点有点权.问某一条路径上排名第\(K\)小的点权是多少 解题思路 类似区间第\(K\)小,但放在了树上. 考 ...