java注解@Transient的作用

@Transient标注的属性,不会被ORM框架映射到数据库中。

用于数据库表字段和java实体属性不一致的时候,标注在属性上使用。

例如时间段的查询 查询

Receipt

的createDate

那么可以在

Receipt

实体中加两个字段:

  //起始时间
@Transient
private Date startDate; //结束时间
@Transient
private Date endDate;

这两个字段并不会在数据库中出现。

但是前台传递过来的时间段,就可以使用这两个字段做接收,然后在JPA查询条件中,

在实体中加上下面这个方法:

package com.pisen.cloud.luna.ms.security.code.base.domain;

import org.apache.commons.lang3.StringUtils;
import org.springframework.data.jpa.domain.Specification; import javax.persistence.*;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; /**
* 入库单
*/
@Entity
@Table(
uniqueConstraints = {
@UniqueConstraint(columnNames = "uid"),
@UniqueConstraint(columnNames = {"receiptCode","tenementId"})
},
indexes = {
@Index(columnList = "receiptCode")
}
)
public class Receipt { public static final Integer SOURCE_PAGE_ADD = 1; //入库单来源-页面新增 public static final Integer SOURCE_CODE_STORAGE= 2;//入库单来源-生码入库 public static final Integer SOURCE_PACKING_STORAGE = 3;//入库单来源-装箱入库 public static final Integer SOURCE_SCAN_CODE_STORAGE = 4;//入库单来源-扫码入库 public static final Integer STATUS_RECEIPT_CREATE_ING = 1;//入库状态-清单生成中 public static final Integer STATUS_RECEIPT_FAIL = 2;//入库状态-清单生成失败 public static final Integer STATUS_RECEIPT_COMPELETE = 3;//入库状态-已入库 @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; //主键 private String uid;//业务主键 private String createUid;// 创建人id private String createName;//入库单创建人 private Date createDate;// 入库单创建时间 入库日期 private String updateId;// 修改人id private Date updateDate;// 入库单修改时间 private String remark;//备注 private String receiptCode;// 入库单号 租户内唯一 private Integer receiptSource;// 入库单来源 private Integer receiptStatus;// 入库状态 private String tenementId;//租户ID private String depotId;//仓库ID private String receiptDepot;// 入库方仓库 仓库名称 private String depotAddress;//仓库地址 private String outerCode;//外部单号 暂时隐藏 //第几页
@Transient
private Integer pageNum = 0; //每页多少条
@Transient
private Integer pageSize = 10; //起始时间
@Transient
private Date startDate; //结束时间
@Transient
private Date endDate; public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public String getUid() {
return uid;
} public void setUid(String uid) {
this.uid = uid;
} public String getCreateUid() {
return createUid;
} public void setCreateUid(String createUid) {
this.createUid = createUid;
} public String getCreateName() {
return createName;
} public void setCreateName(String createName) {
this.createName = createName;
} public Date getCreateDate() {
return createDate;
} public void setCreateDate(Date createDate) {
this.createDate = createDate;
} public String getUpdateId() {
return updateId;
} public void setUpdateId(String updateId) {
this.updateId = updateId;
} public Date getUpdateDate() {
return updateDate;
} public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
} public String getRemark() {
return remark;
} public void setRemark(String remark) {
this.remark = remark;
} public String getReceiptCode() {
return receiptCode;
} public void setReceiptCode(String receiptCode) {
this.receiptCode = receiptCode;
} public Integer getReceiptSource() {
return receiptSource;
} public void setReceiptSource(Integer receiptSource) {
this.receiptSource = receiptSource;
} public Integer getReceiptStatus() {
return receiptStatus;
} public void setReceiptStatus(Integer receiptStatus) {
this.receiptStatus = receiptStatus;
} public String getDepotAddress() {
return depotAddress;
} public void setDepotAddress(String depotAddress) {
this.depotAddress = depotAddress;
} public String getTenementId() {
return tenementId;
} public void setTenementId(String tenementId) {
this.tenementId = tenementId;
} public String getDepotId() {
return depotId;
} public void setDepotId(String depotId) {
this.depotId = depotId;
} public String getReceiptDepot() {
return receiptDepot;
} public void setReceiptDepot(String receiptDepot) {
this.receiptDepot = receiptDepot;
} public String getOuterCode() {
return outerCode;
} public void setOuterCode(String outerCode) {
this.outerCode = outerCode;
} public Integer getPageNum() {
return pageNum;
} public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
} public Integer getPageSize() {
return pageSize;
} public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
} public Date getStartDate() {
return startDate;
} public void setStartDate(Date startDate) {
this.startDate = startDate;
} public Date getEndDate() {
return endDate;
} public void setEndDate(Date endDate) {
this.endDate = endDate;
} //高级查询
public static Specification<Receipt> where(final Receipt receipt){ return new Specification<Receipt>() { @Override
public Predicate toPredicate(Root<Receipt> root, CriteriaQuery<?> query, CriteriaBuilder cb) { List<Predicate> predicates = new ArrayList<Predicate>(); //动态条件
String uid = receipt.getUid();
if(StringUtils.isNotBlank(uid)){
predicates.add(cb.equal(root.<String>get("uid"), uid));
} //入库单号
String receiptCode = receipt.getReceiptCode();
if (StringUtils.isNotBlank(receiptCode)) {
predicates.add(cb.equal(root.<String>get("receiptCode"), receiptCode));
} //入库单来源
Integer receiptSource = receipt.getReceiptSource();
if (receiptSource != null) {
predicates.add(cb.equal(root.<String>get("receiptSource"), receiptSource));
} //入库日期
Date startDate = receipt.getStartDate();
Date endDate = receipt.getEndDate();
if (startDate != null && endDate != null){
predicates.add(cb.between(root.get("createDate"),startDate,endDate));
} //入库状态
Integer receiptStatus = receipt.getReceiptStatus();
if (receiptStatus != null) {
predicates.add(cb.equal(root.<String>get("receiptStatus"), receiptStatus));
} //租户id
String tenementId = receipt.getTenementId();
if(StringUtils.isNotBlank(tenementId)){
predicates.add(cb.equal(root.<String>get("tenementId"), tenementId));
} return query.where(predicates.toArray(new Predicate[predicates.size()])).getRestriction();
}
}; } }
package com.pisen.cloud.luna.ms.security.code.base.domain;

import org.apache.commons.lang3.StringUtils;
import org.springframework.data.jpa.domain.Specification; import javax.persistence.*;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; /**
* 入库单
*/
@Entity
@Table(
uniqueConstraints = {
@UniqueConstraint(columnNames = "uid"),
@UniqueConstraint(columnNames = {"receiptCode","tenementId"})
},
indexes = {
@Index(columnList = "receiptCode")
}
)
public class Receipt { public static final Integer SOURCE_PAGE_ADD = ; //入库单来源-页面新增 public static final Integer SOURCE_CODE_STORAGE= ;//入库单来源-生码入库 public static final Integer SOURCE_PACKING_STORAGE = ;//入库单来源-装箱入库 public static final Integer SOURCE_SCAN_CODE_STORAGE = ;//入库单来源-扫码入库 public static final Integer STATUS_RECEIPT_CREATE_ING = ;//入库状态-清单生成中 public static final Integer STATUS_RECEIPT_FAIL = ;//入库状态-清单生成失败 public static final Integer STATUS_RECEIPT_COMPELETE = ;//入库状态-已入库 @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; //主键 private String uid;//业务主键 private String createUid;// 创建人id private String createName;//入库单创建人 private Date createDate;// 入库单创建时间 入库日期 private String updateId;// 修改人id private Date updateDate;// 入库单修改时间 private String remark;//备注 private String receiptCode;// 入库单号 租户内唯一 private Integer receiptSource;// 入库单来源 private Integer receiptStatus;// 入库状态 private String tenementId;//租户ID private String depotId;//仓库ID private String receiptDepot;// 入库方仓库 仓库名称 private String depotAddress;//仓库地址 private String outerCode;//外部单号 暂时隐藏 //第几页
@Transient
private Integer pageNum = ; //每页多少条
@Transient
private Integer pageSize = ; //起始时间
@Transient
private Date startDate; //结束时间
@Transient
private Date endDate; public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public String getUid() {
return uid;
} public void setUid(String uid) {
this.uid = uid;
} public String getCreateUid() {
return createUid;
} public void setCreateUid(String createUid) {
this.createUid = createUid;
} public String getCreateName() {
return createName;
} public void setCreateName(String createName) {
this.createName = createName;
} public Date getCreateDate() {
return createDate;
} public void setCreateDate(Date createDate) {
this.createDate = createDate;
} public String getUpdateId() {
return updateId;
} public void setUpdateId(String updateId) {
this.updateId = updateId;
} public Date getUpdateDate() {
return updateDate;
} public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
} public String getRemark() {
return remark;
} public void setRemark(String remark) {
this.remark = remark;
} public String getReceiptCode() {
return receiptCode;
} public void setReceiptCode(String receiptCode) {
this.receiptCode = receiptCode;
} public Integer getReceiptSource() {
return receiptSource;
} public void setReceiptSource(Integer receiptSource) {
this.receiptSource = receiptSource;
} public Integer getReceiptStatus() {
return receiptStatus;
} public void setReceiptStatus(Integer receiptStatus) {
this.receiptStatus = receiptStatus;
} public String getDepotAddress() {
return depotAddress;
} public void setDepotAddress(String depotAddress) {
this.depotAddress = depotAddress;
} public String getTenementId() {
return tenementId;
} public void setTenementId(String tenementId) {
this.tenementId = tenementId;
} public String getDepotId() {
return depotId;
} public void setDepotId(String depotId) {
this.depotId = depotId;
} public String getReceiptDepot() {
return receiptDepot;
} public void setReceiptDepot(String receiptDepot) {
this.receiptDepot = receiptDepot;
} public String getOuterCode() {
return outerCode;
} public void setOuterCode(String outerCode) {
this.outerCode = outerCode;
} public Integer getPageNum() {
return pageNum;
} public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
} public Integer getPageSize() {
return pageSize;
} public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
} public Date getStartDate() {
return startDate;
} public void setStartDate(Date startDate) {
this.startDate = startDate;
} public Date getEndDate() {
return endDate;
} public void setEndDate(Date endDate) {
this.endDate = endDate;
} //高级查询
public static Specification<Receipt> where(final Receipt receipt){ return new Specification<Receipt>() { @Override
public Predicate toPredicate(Root<Receipt> root, CriteriaQuery<?> query, CriteriaBuilder cb) { List<Predicate> predicates = new ArrayList<Predicate>(); //动态条件
String uid = receipt.getUid();
if(StringUtils.isNotBlank(uid)){
predicates.add(cb.equal(root.<String>get("uid"), uid));
} //入库单号
String receiptCode = receipt.getReceiptCode();
if (StringUtils.isNotBlank(receiptCode)) {
predicates.add(cb.equal(root.<String>get("receiptCode"), receiptCode));
} //入库单来源
Integer receiptSource = receipt.getReceiptSource();
if (receiptSource != null) {
predicates.add(cb.equal(root.<String>get("receiptSource"), receiptSource));
} //入库日期
Date startDate = receipt.getStartDate();
Date endDate = receipt.getEndDate();
if (startDate != null && endDate != null){
predicates.add(cb.between(root.get("createDate"),startDate,endDate));
} //入库状态
Integer receiptStatus = receipt.getReceiptStatus();
if (receiptStatus != null) {
predicates.add(cb.equal(root.<String>get("receiptStatus"), receiptStatus));
} //租户id
String tenementId = receipt.getTenementId();
if(StringUtils.isNotBlank(tenementId)){
predicates.add(cb.equal(root.<String>get("tenementId"), tenementId));
} return query.where(predicates.toArray(new Predicate[predicates.size()])).getRestriction();
}
}; } }

【Java】java注解@Transient的作用, 配合JPA中时间段的查询的更多相关文章

  1. Spring Data JPA中的动态查询 时间日期

    功能:Spring Data JPA中的动态查询 实现日期查询 页面对应的dto类private String modifiedDate; //实体类 @LastModifiedDate protec ...

  2. JPA中的复杂查询

    JPQL全称Java Persistence Query Language 基于首次在EJB2.0中引入的EJB查询语言(EJB QL),Java持久化查询语言(JPQL)是一种可移植的查询语言,旨在 ...

  3. 【spring data jpa】jpa中使用in查询或删除 在@Query中怎么写 ,报错:org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'goodsConfigUid' cannot be found on null 怎么处理

    示例代码如下: @Modifying @Transactional @Query("delete from GoodsBindConfigMapping gbc " + " ...

  4. hibernate 或jpa 中使用 AliasToBeanResultTransformer 自定义类型转换ResultTransformer 下划线转驼峰

    jpa中使用 sql查询时,返回结果直接转为实体bean的实现, 需要自定义一个ResultTransformer,如下, import java.util.Arrays; import org.ap ...

  5. Java基础学习总结(41)——JPA常用注解

    JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.         JPA由EJB 3.0软件专 ...

  6. JAVA 注解的几大作用及使用方法详解

    JAVA 注解的几大作用及使用方法详解 (2013-01-22 15:13:04) 转载▼ 标签: java 注解 杂谈 分类: Java java 注解,从名字上看是注释,解释.但功能却不仅仅是注释 ...

  7. paip.Java Annotation注解的作用and 使用

    paip.Java Annotation注解的作用and 使用 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog. ...

  8. JAVA 注解的几大作用及使用方法详解【转】

    java 注解,从名字上看是注释,解释.但功能却不仅仅是注释那么简单.注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解 ...

  9. java transient关键字作用,使用场景。

    java transient关键字作用,使用场景. 2016年08月31日 15:31:10 阅读数:4280 transient的作用及使用方法,官方解释为: Variables may be ma ...

随机推荐

  1. JDK从1.8升级到9.0.1后sun.misc.BASE64Decoder和sun.misc.BASE64Encoder不可用

    目录 描述 原因分析 处理办法 参考 描述 最近研究把项目的JDK升级从1.8升级到9.0.1,在eclipse上配置好JDK为9后,发现项目有错,查看发现sun.misc.BASE64Decoder ...

  2. 哈夫曼树(C++优先队列的使用)

       给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称为哈夫曼树(Huffman Tree).哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近.    构造 假设有n个权 ...

  3. Mysql入门的10条语句

    1.查看当前服务器下面,有那些库(database)? 答: show databases; 2.如何创建一个数据库? 答 : create database 最后面在写数据库名:分号结束 3.选择数 ...

  4. TypeScript类型定义文件(*.d.ts)生成工具

    在开发ts时,有时会遇到没有d.ts文件的库,同时在老项目迁移到ts项目时也会遇到一些文件需要自己编写声明文件,但是在需要的声明文件比较多的情况,就需要自动生产声明文件.用过几个库.今天简单记录一下. ...

  5. [洛谷P1501][国家集训队]Tree II

    题目大意:给一棵树,有四种操作: $+\;u\;v\;c:$将路径$u->v$区间加$c$ $-\;u_1\;v_1\;u_2\;v_2:$将边$u_1-v_1$切断,改成边$u_2-v_2$, ...

  6. Sublime Text 2注册码

    出处不详. ----- BEGIN LICENSE ----- Andrew Weber Single User License EA7E-855605 813A03DD 5E4AD9E6 6C0EE ...

  7. Pty的字符串(string)

    题目描述 在神秘的东方有一棵奇葩的树,它有一个固定的根节点(编号为1).树的每条边上都是一个字符,字符为a,b,c中的一个,你可以从树上的任意一个点出发,然后沿着远离根的边往下行走,在任意一个节点停止 ...

  8. hibernate用配置文件的方式实现orm

    本文主要讲用配置文件的方式讲如何把一个对象和数据库中的表关联起来,其实用配置文件本质是和用注解的方式是一样的. 思路:1.写一个domain对象(如Person.java) 2.写这个domain对象 ...

  9. 7月14号day6总结

    今天学习过程和总结 IOC和DIO IOC相当于一个容器,在容器中加注解.接口存在意义依赖注入.4个注解都行,依赖注入只能发生在IOC容器里, pring IOC 容器可以管理Bean 的生命周期,S ...

  10. Windows转移FSMO角色

    转移 FSMO 角色若要使用 Ntdsutil 实用工具转移 FSMO 角色,请按照下列步骤操作:1.登录到基于 Windows 2000 Server 或基于 Windows Server 2003 ...