Hibernate JPA使用@Transient
默认情况下,JPA 持续性提供程序假设实体的所有字段均为持久字段。
使用 @Transient
注解指定实体的非持久字段或属性,例如,一个在运行时使用但并非实体状态一部分的字段或属性。
JPA 持续性提供程序不会对注解为 @Transient
的属性或字段持久保存(或创建数据库模式)。
该批注可以与 @Entity 、@MappedSuperclass 和 @Embeddable 一起使用。
该批注没有属性。有关更多详细信息,请参阅 API 。
1 实体类
/**
* 客户
* @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;
}
}
2 测试类
/**
* 演示@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字段:
热门文章
优秀文章