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 = 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();
}
        };

}

}