jpa 的动态插入和动态更新

来源:互联网 发布:织梦cms如何安装 编辑:程序博客网 时间:2024/04/29 15:00
使用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
......
}

原创粉丝点击