使用JPA的時候,當我們插入數據的時候,我們不僅可以自己在model類里面賦初值,還可以使用數據庫表的default值。希望大家通過以下對JPA學習,能對大家有幫助。
讓我們開始進行JPA學習吧。首先,我們在model類里面為column設置數據庫default值,以前使用Hibernate的時候的做法是添加sql-type,例如:
<property name="viewDate" not-null="false" type="java.util.Date">
<column name="viewDate" sql-type="datetime; default getdate()"/>
</property>
在JPA里面使用columnDefinition代替sql-type:
@Column(columnDefinition="datetime default getdate()")
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
private Date viewDate;
那么,當我們的generateDdl設為true的時候,可以在數據庫生成表,而且viewDate字段會帶一個默認值getdate(),當我們的sql語句不帶viewDate字段的時候,就會使用到getdate()去取數據庫的系統時間。
以前Hibernate的做法是添加dynamic-insert="true"和dynamic-update="true" 。但是JPA好像沒有這個功能。如果你的JPA的Privider
是Hibernate的話可以添加如下Annotation為我們的實體提供dynamic-insert,dynamic-update,如下:
@Entity
@org.hibernate.annotations.Entity(dynamicInsert=true,dynamicUpdate=true)
public class MyEntity{
//省略其他字段
......
@Column(columnDefinition="datetime default getdate()")
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
private Date viewDate;
//注意,這里不要給viewDate一個初始值,例如viewDate = new Date();是錯的。只有null才會在加入的時候,使用到dynamicInsert
//省略getter,setter
......
}
那么,當加入一條MyEntity記錄的時候,我們的viewDate為null,就可以取數據庫時間了。希望通過JPA學習,能幫到大家獲得需要的知識。