在hibernate中insertable = false和transient之间的区别

Ash*_*til 3 java hibernate jpa

两者之间的功能区别是什么

@Entity
public class UserDetails {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "User_Id")
    private int userId;

    @Column(name = "User_Name", insertable = false)
    private String userName;
}
Run Code Online (Sandbox Code Playgroud)

@Entity公共类UserDetails {

@Entity
public class UserDetails {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "User_Id")
    private int userId;

    @Transient
    private String userName;
}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,都不会创建列.

JB *_*zet 13

@Transient意思是:这个属性根本不是持久的.它不是由JPA处理的.每次从数据库中获取实体时,该属性将为null(或者由无参数构造函数初始化的任何属性).

insertable=false表示保存实体时JPA不会在insert语句中包含该列.但它会在更新实体时,它将从数据库加载它.

请参阅http://docs.oracle.com/javaee/6/api/javax/persistence/Column.html#insertable%28%29http://docs.oracle.com/javaee/6/api/javax/persistence /Transient.html