Java世界

学习笔记

常用链接

统计

积分与排名

天籁村

新华网

雅虎

最新评论

JPA插入或者修改数据的时候使用数据库表的default值(JPA动态插入动态更新)

使用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学习,能帮到大家获得需要的知识。

posted on 2010-12-20 13:55 Rabbit 阅读(7382) 评论(1)  编辑  收藏

评论

# re: JPA插入或者修改数据的时候使用数据库表的default值(JPA动态插入动态更新) 2015-05-11 11:00 123456789

健康减肥咖啡姐看风景  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: