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异常信息)的更多相关文章

  1. JPA(Hibernate) @OneToMany 两种例子

    环境:Spring Data Jpa,hibernate或者其他jpa实现也是一样的:Spring Boot 场景:User和Role,一个User要对应多个Role. 第一种方式,没有中间关系表,直 ...

  2. Spring Data Jpa(Hibernate) OneToMany

    这个其实非常简单.假设有topic 和 subscriber两个实体类,不考虑关联关系,则连个类的代码如下: /** * Created by csonezp on 2017/8/31. */ @En ...

  3. Hibernate @OneToMany等注解设置查询过滤条件等

    1.如实体PdOrg对象中有users对象,数据库user表有字段DEL_FLAG(0:删除:1:未删除): private List<User> users= new ArrayList ...

  4. hibernate @OneToMany等注解设置查询过滤条件

    如实体PdOrg对象中有users对象,数据库user表有字段DEL_FLAG(0:删除:1:未删除): private List<User> users= new ArrayList&l ...

  5. 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 ...

  6. Spring + SpringMVC + Druid + JPA(Hibernate impl) 给你一个稳妥的后端解决方案

    最近手头的工作不太繁重,自己试着倒腾了一套用开源框架组建的 JavaWeb 后端解决方案. 感觉还不错的样子,但实践和项目实战还是有很大的落差,这里只做抛砖引玉之用. 项目 git 地址:https: ...

  7. 五、spring boot 1.5.4 集成 jpa+hibernate+jdbcTemplate

    1.pom添加依赖 <!-- spring data jpa,会注入tomcat jdbc pool/hibernate等 --> <dependency> <group ...

  8. Spring Boot + Jpa(Hibernate) 架构基本配置

    本文转载自:https://blog.csdn.net/javahighness/article/details/53055149 1.基于springboot-1.4.0.RELEASE版本测试 2 ...

  9. SpringBoot + Jpa(Hibernate) 架构基本配置

    1.基于springboot-1.4.0.RELEASE版本测试 2.springBoot + Hibernate + Druid + Mysql + servlet(jsp) 一.maven的pom ...

随机推荐

  1. 高性能队列——Disruptor

    背景 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级).基于Disruptor开发的系统单线程能 ...

  2. Kafka 0.11.0.0 实现 producer的Exactly-once 语义(英文)

    Exactly-once Semantics are Possible: Here’s How Kafka Does it I’m thrilled that we have hit an excit ...

  3. python3 Counter模块

    from collections import Counter c = Counter("周周周周都方法及")print(c)print(type(c))print('__iter ...

  4. bzoj3122 [SDOI2013]随机数生成器

    bzoj3122 [SDOI2013]随机数生成器 给定一个递推式, \(X_i=(aX_{i-1}+b)\mod P\) 求满足 \(X_k=t\) 的最小整数解,无解输出 \(-1\) \(0\l ...

  5. 程序员修神之路--🤠分布式高并发下Actor模型如此优秀🤠

    写在开始 一般来说有两种策略用来在并发线程中进行通信:共享数据和消息传递.使用共享数据方式的并发编程面临的最大的一个问题就是数据条件竞争.处理各种锁的问题是让人十分头痛的一件事. 传统多数流行的语言并 ...

  6. try.dot.net 的正确使用姿势

    [简介] 微软官方前不久发布了 try.dot.net 这个有趣的网址,开始只是图个新鲜看了一下,后面通过自身实践过后,发现这着实算是个“有趣”的站点! 首先我们大概地列举一下这个站点能给我们带来什么 ...

  7. zookeeper报错java.net.ConnectException: Connection refused: no further information

    zookeeper报错java.net.ConnectException: Connection refused: no further information 这是在linux 启动 https:/ ...

  8. 关于dubbo+zookeeper微服务的一些认识记录

    借鉴架构示意图: 实例介绍: 公司某项目架构 服务器A:nginx 服务器BC:tomcat1.tomcat2 服务器D:Dubbo+zookeeper 服务器EF:db1+zookeeper.db2 ...

  9. [BZOJ 2285] [SDOI 2011] 保密

    Description 传送门 Solution 这道题的最大难点在于读懂题意(雾 分数规划求出 \(n\) 到 \(1\cdots n_1\) 每个点的最小 \(\sum\frac{t_i}{s_i ...

  10. SpringCloud 过滤器

    在网关中配置过滤器 验证签名 package com.kps.zuul.filter; import com.kps.common.BodyReaderHttpServletRequestWrappe ...