@Transient的应用
我今天分配的任务是为一个页面Debug,遇到了一个问题查询的实体类在数据库没有对应的表,这时最常用的是建立视图或者表,但是应用@Transient注释可以让你更简单,免除建立表还有视图需要找多表关联关系的苦恼,@Transient 表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性.
如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient 后面就不要用实体去查询了,在dao类中写一个多表联查。
package com.haiyisoft.entity;
import java.math.BigDecimal;
import com.haiyisoft.ep.common.db.Record;
import com.haiyisoft.ep.common.jpa.meta.EntityMetaData;
import com.haiyisoft.ep.common.jpa.util.EntityMetaDataUtil;
import com.haiyisoft.ep.common.util.PrintUtil;
import com.haiyisoft.ep.exception.BaseRunException;
import javax.persistence.*;
import com.haiyisoft.entity.EntityBean;
@Entity
@Table(name = "eai_test_person_info")
public class EaiTestPersonInfo extends EntityBean{
private static final long serialVersionUID = 1L;
@Transient
@Id
@Column(name = "Pk")
private BigDecimal pk;
@Transient
@Column(name = "account")
private String account="";
@Transient
@Column(name = "contract")
private String contract="";
@Transient
@Column(name = "name")
private String name="";
@Transient
@Column(name = "sex")
private String sex="";
@Transient
@Column(name = "address")
private String address="";
@Transient
@Column(name = "phone")
private String phone="";
@Transient
@Column(name = "email")
private String email="";
public BigDecimal getPk() {
return pk;
}
public void setPk(BigDecimal pk){
this.pk = pk;
}
public String getAccount() {
return account;
}
public void setAccount(String account){
this.account = account;
}
public String getContract() {
return contract;
}
public void setContract(String contract){
this.contract = contract;
}
public String getName() {
return name;
}
public void setName(String name){
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex){
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address){
this.address = address;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone){
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email){
this.email = email;
}
@Override
public Record exportToRecord() {
EntityMetaData metaData = EntityMetaDataUtil.getEntityMetaData(this.getClass().getName());
if (metaData == null) {
new BaseRunException("Java类"+this.getClass().getName()+"没有元数据信息!不能导出为Record!").handle();
}
Record record = PrintUtil.genEmptyExportRecord(metaData);
record.set("Pk", this.pk);
record.set("account", this.account);
record.set("contract", this.contract);
record.set("name", this.name);
record.set("sex", this.sex);
record.set("address", this.address);
record.set("phone", this.phone);
record.set("email", this.email);
record.set("checked", super.getChecked());
return record;
}
}
@Transient的应用的更多相关文章
- transient关键字的用法
本篇博客转自 一直在路上 Java transient关键字使用小记 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java ...
- Java transient关键字
Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值.而且,当成员变量发生变化时,强迫线程将变化值回写到主内存.这样在任何时刻,两个不同的线程总是看到某个成员变量的同一 ...
- Java中的关键字 transient
先解释下Java中的对象序列化 在讨论transient之前,有必要先搞清楚Java中序列化的含义: Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息 ...
- transient关键字的作用
代码如下: import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutpu ...
- Transient的作用
1:transient的作用及其使用方法 当一个对象实现类Serilizable接口,那么这个类就可以被序列化,java的这种序列化的模式为开发者提供了很多的便利. 然而在实际开发中,我们常常遇到这样 ...
- java中transient关键字的作用
Java有个特点就是序列化,简单地来说就是可以将这个类存储在物理空间(当然还是以文件的形式存在),那么当你从本地还原这个文件时,你可以将它转换为它本身.这可以极大地方便网络上的一些操作,但同时,因为涉 ...
- DI中Transient Scoped Singleton Instance的区别
Observe which of the OperationId values varies within a request, and between requests. Transient obj ...
- Java transient 关键字
1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问. 2)transient关键字只能修饰变量,而不能修饰方法和类.注意,本地变量是不能被trans ...
- 序列化,反序列化和transient关键字
一.序列化和反序列化的概念 序列化:指把java对象转换为字节序列的过程. 反序列化:指把字节序列恢复为java对象的过程. 对象的序列化主要有两种用途: 1) 把对象的字节序列保存到硬盘上,通常存放 ...
- @Transient注解----Hiberbate
@Transient表示该属性并非一个到数据库表的字段的映射,将会忽略该属性.如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic Exa ...
随机推荐
- MySQL导出数据到文件中
一.导出一张表数据 把test_time表中的数据导出成txt 文件 mysql> show global variables like '%secure%'; +--------------- ...
- Java注解【四、自定义注解】
语法要求.元注解 元注解: Target-适用范围: Retention-类型:源码注解.编译时注解.运行时注解 Inherited-可继承(只能继承类上的注解,接口.类中的方法都不行) Docume ...
- 采用kubeadm部署工具,部署kubernetes1.16.3
安装kubenetes有5种部署工具,分别是kubeadm.kops.KRIB.Kubespray.本实验采用的是kubeadm部署工具.如有想了解其他部署工具,请点击这里 环境说明 角色/主机名 系 ...
- ioping测试
ioping 一个实时显示磁盘io延时的工具,以类似ping 的输出一样展示输出结果 常用参数: -c count stop after count requests. -i interval Set ...
- phpStorm中使用xdebug工具调试docker容器中的程序
前提准备 phpstorm开发软件 + dnmp(docker + nginx + mysql +php) 配置好hosts 映射比如 /etc/hosts 127.0.0.1 tp5.de ...
- linux获取某一个网卡的ipv4地址
ip a show ens33 | grep inet | grep -v inet6 | awk '{print $2}' | awk -F '/' '{print $1}'
- Jmeter中间件处理-缓存
前言 消息队列和缓存是目前主流的中间件,我们在日常测试过程中,无论是接口还是压力测试,都会遇到需要处理这些中间件数据的情况.本文以Redis对缓存做一个简单的介绍,并基于Jmeter实现缓存数据处理. ...
- 不能使用 float 和 double 来表示金额等精确的值
不能使用 float 和 double 来表示金额等精确的值 关于面试,金额用什么数据类型? 不是 doube,更不是 float ,而是用 BigDecimal.对于金融项目,对于金额,误差是不能容 ...
- 阿里云端安装mysql
首先查看系统版本,是64位的centos7 file /sbin/init 安装指南如下 https://www.cnblogs.com/thinkingandworkinghard/p/671125 ...
- Easy UI 入门
Easy UI常用于企业级开发的UI和后台开发的UI,比较重. 以下组件中的加载方式,属性和事件,方法和组件种类并不全,只是作为参考和入门学习. 1.Draggable(拖动)组件 不依赖其他组件 1 ...