经常会发现一在特定情况下,我们不希望某个字段值被修改,比如:一条记录的创建时间。
通常在编辑时,如果不设置创建时间,更新后的创建时间为设置为空。当然也可以将创建时间的值带到编辑页面中,再次保存时就不会为空了。那多麻烦。其实hibernate有更好的办法。那就是设置属性的update值为false.举例:
1、实体类映射
这里的关键是"updateable=false"
2、更新程序
当新增一条记录时,设置当时的系统时间。修改更新时就不予理采了。
例子是基于annotation的。如果采用xml作映射,则需在hbm.xml文件中为属性设置"update=false".举例如下:
通常在编辑时,如果不设置创建时间,更新后的创建时间为设置为空。当然也可以将创建时间的值带到编辑页面中,再次保存时就不会为空了。那多麻烦。其实hibernate有更好的办法。那就是设置属性的update值为false.举例:
1、实体类映射
@Entity
@Table(name = "KNOW_LORE", schema = "DWYJ")
public class Lore extends BaseEntity{
// Fields
private Date createDate; //创建日期
// Constructors
/** default constructor */
public Lore() {
}
// Property accessors
@Column(name="CREATE_DATE",updatable=false)
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
}
这里的关键是"updateable=false"
2、更新程序
@Transactional
public void saveLore(Lore lore){
if(lore!=null){
if("".equals(lore.getId()))
lore.setId(null);
if(null==lore.getId()){
lore.setCreateDate(new Timestamp(System.currentTimeMillis()));
}
dao.save(lore);
}
}
当新增一条记录时,设置当时的系统时间。修改更新时就不予理采了。
例子是基于annotation的。如果采用xml作映射,则需在hbm.xml文件中为属性设置"update=false".举例如下:
...
<property name="createDate" type="date" update="false"/>
...