@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;
}


}

原文地址:https://www.cnblogs.com/zhangzhiqin/p/7998001.html