• entity 的特别用法


    下面是经过特殊处理的entiey(实例)

    package com.heren.his.domain.entity.drug;
    
    import javax.persistence.*;
    import javax.xml.bind.annotation.XmlAccessType;
    import javax.xml.bind.annotation.XmlAccessorType;
    import javax.xml.bind.annotation.XmlRootElement;
    
    @Entity
    @Table(name="DRUG_PRESC_DETAIL_TEMP")
    @XmlRootElement
    @XmlAccessorType(XmlAccessType.FIELD)
    public class DrugPrescDetailTemp {
    
        @Id
        private DrugPrescDetailTempPK drugPrescDetailTempPK;
    
        @Column(name="PAYMENTS")
        private Double payments;
    
        @Column(name="DETAIL_NO")
        private String detailNo;
    
        @Column(name="ITEM_ID")
        private String itemId;
    
        @Transient
      //指定属性或字段不是持久的。它用于为实体类、映射超类或可嵌入类的属性或字段进行注释。
    private String administration; public DrugPrescDetailTemp() { } public DrugPrescDetailTemp(DrugPrescDetailTempPK drugPrescDetailTempPK, Double payments, String detailNo, String itemId) { this.drugPrescDetailTempPK = drugPrescDetailTempPK;this.payments = payments; this.detailNo = detailNo; this.itemId = itemId; } public DrugPrescDetailTempPK getDrugPrescDetailTempPK() { return drugPrescDetailTempPK; } public void setDrugPrescDetailTempPK(DrugPrescDetailTempPK drugPrescDetailTempPK) { this.drugPrescDetailTempPK = drugPrescDetailTempPK; } public Double getPayments() { return payments; } public void setPayments(Double payments) { this.payments = payments; } public String getDetailNo() { return detailNo; } public void setDetailNo(String detailNo) { this.detailNo = detailNo; } public String getItemId() { return itemId; } public void setItemId(String itemId) { this.itemId = itemId; } public void setAdministration(String administration) { this.administration = administration; } }

      特殊之处在于红色部分标注的内容,含有@Id @Column的属性大家都知道是hibernate的注解,是用来和数据库字段一一对应的,而@Transient(指定属性或字段不是持久的。它用于实体类、映射超类或可嵌入类的属性或字段进行注解),所以在含有形参的构造函数里面不包含@Transient标注的属性,因为数据库表对应的字段不含有这个注解标注的属性,实例化的时候也不对这个属性赋值。

      那什么时候才会用到这个属性呢?当前端要显示实体类中的一些属性,但是@Transient标注的这个属性并不能从数据库中得到,而是从另一个表里面取到,所以说在从数据库中得到这个实体类的对象时候,再从另一个表中取到这个属性,赋值给这个实体类的对象。这样一来前端需要显示的全部属性就得到了。如下:

    public List<DrugPrescDetailTemp> queryInpPresc(String visitNo) {
        List<DrugPrescDetailTemp> drugPrescDetailTempList = find(DrugPrescDetailTemp.class, "from DrugPrescDetailTemp dpdt where dpdt.prescNo =?1", prescNo); drugPrescDetailTempList.forEach(drugPrescDetailTemp -> {   String administration = createQuery(String.class, "select administration from DrugOrderDetail dod where dod.orderId=?1", drugPrescDetailTemp.getItemNo()).getSingleResult(); drugPrescDetailTemp.setAdministration(administration); }); });
        return drugPrescDetailTempList;
      }

      代码片段一和代码片段二中紫色的代码则是经过特殊处理和特殊操作的,这就是特殊处理的entity。

  • 相关阅读:
    团队项目-smart原则
    团队项目-作业管理系统
    团队模式和团队的开发模式是什么,它们有什么关系?
    软件工作量的估计有哪些方法?
    腾讯qq的发展史
    软件过程与项目管理(第二次作业)
    有学生提到,在大学选课的时候,可以写一个“刷课机”的程序,利用学校选课系统的弱点或漏洞,帮助某些人选到某些课程。或者帮助用户刷购票网站,先买到火车票。这些软件合法么?符合道德规范么?是在“软件工程”的研究范围么?
    mysql中explain的type的解释
    php 中类型转换 numfamat、round函数tips
    python client端收不到server端构造的结构体数据
  • 原文地址:https://www.cnblogs.com/ms-grf/p/6795569.html
Copyright © 2020-2023  润新知