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

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号