在插入时运行的触发器
<property name="created" insert="false" update="false" column="CREATED" type="timestamp" />
User user = new User();
session.save(user);
session.flush();
session.refresh(user);
System.out.println(user.getCreated());
refresh():利用数据库中的当前值,刷新处于持久化状态的内存实例
<property name="created" type="timestamp" column="CREATED" generated="insert" insert="false" update="false"/>
@Temporal(TemporalType.TIMESTAMP) @org.hibernate.annotations.Generated( org.hibernate.annotations.GenerationTime.INSERT ) @Column(name = "CREATED", insertable = false, updatable = false) private Date created;
<version name="version" column="OBJ_VERSION" generated="always"/> ... <timestamp name="lastModified" column="LAST_MODIFIED" generated="always"/> ... <property name="lastModified" type="timestamp" column="LAST_MODIFIED" generated="always" insert="false" update="false"/>
@Version
@org.hibernate.annotations.Generated(
org.hibernate.annotations.GenerationTime.ALWAYS
)
@Column(name = "OBJ_VERSION")
private int version;
@Version
@org.hibernate.annotations.Generated(
org.hibernate.annotations.GenerationTime.ALWAYS
)
@Column(name = "LAST_MODIFIED")
private Date lastModified;
@Temporal(TemporalType.TIMESTAMP)
@org.hibernate.annotations.Generated(
org.hibernate.annotations.GenerationTime.ALWAYS
)
@Column(name = "LAST_MODIFIED", insertable = false, updatable = false)
private Date lastModified;
强制hibernate利用SQL SELECT来获取当前数据库的快照
<class name="Item" table="ITEM" select-before-update="true"> ... </class>
@Entity @org.hibernate.annotations.Entity(selectBeforeUpdate = true) public class Item { ... }