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。

时间: 2024-10-11 05:16:01

entity 的特别用法的相关文章

io流的一些特别用法

之前我们老大给我分配了个任务,要我按数据库表结构建下类,看了一下,尼玛37张表,字段多的有二三十个,想想也是蛋疼,不过还好之前我们老师有给我们说过有一种东西叫敏捷开发,那次给我们演示了下通过io流直接建出一个类,所以我果断的把代码翻出来加工了一下,主要的原理就是先建立模型,把格式固定的代码提取出来,把中间可能会变化的部分用一些特殊单词替换(只要不跟平时的会用到的属性名相同或者包含就行),建立成一个模板(也可以直接写在方法里),然后通过io去读这个模板,并通过字符串的替换.截取等操作把这个模板中的

static特别用法【静态导包】——Java包的静态导入

面试我问你static关键字有哪些作用,如果你答出static修饰变量.修饰方法我会认为你合格,答出静态块,我会认为你不错,答出静态内部类我会认为你很好,答出静态导包我会对你很满意,因为能看出你非常热衷研究技术. 于是乎查找资料如下: 静态导包就是Java包的静态导入,用import static代替import静态导入包是JDK1.5中的新特性. 一般我们导入一个类都用 import com-..ClassName;而静态导入是这样:import static com-..ClassName.

双感叹号!!运算符的用法

因为C语言中,所有非0值都表示"真".所以!非0值 = 0,而!0 = 1.双感叹号!!作用就是非0值转成1,而0值还是0.双感叹号!!是为了把"非0值"转换成1,而0值还是0.!!不难理解,举例: !!(expression) 等价于!(!expression).如果express是一个指针,最终结果就是1.这样!!(expression)可以给bool变量赋值了. 用法举例:对于一个判断的函数如下,老的写法可能是这样: - (BOOL)isLaunched {

【转载】ADO.NET与ORM的比较(4):EntityFramework实现CRUD

[转载]ADO.NET与ORM的比较(4):EntityFramework实现CRUD 说明:个人感觉在Java领域大型开发都离不了ORM的身影,所谓的SSH就是Spring+Struts+Hibernate,除了在学习基础知识的时候被告知可以使用JDBC操作数据库之外,大量的书籍中都是讲述使用Hibernate这个ORM工具来操作数据.在.NET中操作数据库的方式有多种,除了最直接的方式就是使用ADO.NET之外,还可以使用NHibernate这个Hibernate在.NET中的实现ORM,如

【转】Windows Error Code(windows错误代码详解)

本文来自: http://blog.sina.com.cn/s/blog_5e45d1be0100i0dr.html http://blog.sina.com.cn/s/blog_5e45d1be0100i0dt.html http://blog.sina.com.cn/s/blog_5e45d1be0100i0dv.html 这三篇,因为格式实在太乱,因此拿来整理了一下.找这个的原因是今天在改程序的时候蹦出来个WindowsError: [Error 2],也没有说这个东西是什么错误.于是百度

delphi SysErrorMessage 函数和系统错误信息表 good

在看 API 文档时, 我们经常见到 GetLastError; 它可以返回操作后系统给的提示. 但 GetLastError 返回的只是一个信息代码, 如何返回对应的具体信息呢? FormatMessage 可以, 但这个函数太复杂了; 可以用 SysErrorMessage 代替它. 举例: [Delphi] view plaincopyprint? <pre><pre class="delphi" name="code">var err

Windows 错误代码

Error Messages for Windows http://www.gregorybraun.com/MSWINERR.ZIP Server 4.0 Error Messages   Code Error Message 0 操作成功完成. 1 函数不正确. 2 系统找不到指定的文件. 3 系统找不到指定的路径. 4 系统无法打开文件. 5 拒绝访问. 6 句柄无效. 7 存储控制块被损坏. 8 存储空间不足,无法处理此命令. 9 存储控制块地址无效. 10 环境不正确. 11 试图加载

unity内存管理

最近一直在研究unity的内存加载,因为它是游戏运行的重中之重,如果不深入理解和合理运用,很可能导致项目因内存太大而崩溃. 详细说一下细节概念:AssetBundle运行时加载:来自文件就用CreateFromFile(注意这种方法只能用于standalone程序)这是最快的加载方法也可以来自Memory,用CreateFromMemory(byte[]),这个byte[]可以来自文件读取的缓冲,www的下载或者其他可能的方式.其实WWW的assetBundle就是内部数据读取完后自动创建了一个

6:知识的领域和结构,一种新的奇思妙想的组合结合

1.三个案例 案例1:幼儿的语言学习 可见现象: 1.听音学语言,只有声音--结果:学不会 2.听看学语言,声音和画面--结果:很容易学会 通过不断的倾听声音和观察的画面形成关联 案例2:PPT训练营 可见现象: 操作技巧很熟练,但是成品整体水平很差劲. 做好PPT的3个领域知识: 1.PPT操作技巧: 插入元素.母版.快捷键.动画 2.足够的审美知识: 空间结构.颜色搭配.元素设计 3.足够的逻辑能力 结构大纲.先后顺序.语言提炼 案例3:记忆数字 一样长度的数字,有些容易记忆有些却很难 20