1. 程式人生 > >jpa 的動態插入和動態更新

jpa 的動態插入和動態更新

使用JPA的時候,當我們插入資料的時候,我們不僅可以自己在model類裡面賦初值,還可以使用資料庫表的default值。希望大家通過以下對JPA學習,能對大家有幫助。

  讓我們開始進行JPA學習吧。首先,我們在model類裡面為column設定資料庫default值,以前使用Hibernate的時候的做法是新增sql-type,例如:
<property name="viewDate" not-null="false"type="java.util.Date"> 

<columnname="viewDate" sql-type="datetime; defaultgetdate()"/> 


</property>

在JPA裡面使用columnDefinition代替sql-type:
 
@Column(columnDefinition="datetime default getdate()")
 
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
 
private DateviewDate;

那麼,當我們的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 DateviewDate;
//注意,這裡不要給viewDate一個初始值,例如viewDate = newDate();是錯的。只有null才會在加入的時候,使用到dynamicInsert
//省略getter,setter
......
}