hibrnate教程15~Hibernate JPA使用@Transient

默认情况下,JPA 持续性提供程序假设实体的所有字段均为持久字段。

 

使用 @Transient 注解指定实体的非持久字段或属性,例如,一个在运行时使用但并非实体状态一部分的字段或属性。

 

JPA 持续性提供程序不会对注解为 @Transient 的属性或字段持久保存(或创建数据库模式)。
该批注可以与 @Entity 、@MappedSuperclass 和 @Embeddable 一起使用。
该批注没有属性。有关更多详细信息,请参阅 API 。


一、实体类

/**
 * 客户
 * @author http://www.yiidian.com
 */
@Entity
@Table(name = "t_customer")
public class Customer {
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id")
	private Integer id;
	@Column(name = "name")
	private String name;
	@Column(name = "gender")
	private String gender;
	
	//这是一个临时字段,不会持久化到数据库表
	@Transient
	private Boolean isMarried;
	public Boolean getIsMarried() {
		return isMarried;
	}

	public void setIsMarried(Boolean isMarried) {
		this.isMarried = isMarried;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

}

二、测试类

/**
 * 演示@Transient的使用
 * @author lenovo
 *
 */
public class Demo {

	@Test
	public void test1(){
		Session session = HibernateUtil.getSession();
		Transaction tx = session.beginTransaction();
		
		Customer cust = new Customer();
		cust.setName("王五");
		cust.setGender("男");
		cust.setIsMarried(true);
		session.save(cust);
		
		tx.commit();
	}
	
}

这时发现控制台没有插入isMarried字段:

Hibernate: 
    insert 
    into
        t_customer
        (gender, name) 
    values
        (?, ?)

表中也没有isMarried字段:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值