如何使用hibernate XML映射将列值默认设置为在数据库中配置?

时间:2017-09-20 09:59:45

标签: hibernate nhibernate hibernate-mapping

您好我正在寻找设置xml映射的解决方案,将默认列值设置为DB中配置。

e.g 表 列UPDATE_BY_DATE,UPDATE_BY_USER 输入timestamp,varchar 默认SYSDATE,USER

XML映射

<property name="updatedByTime" column="UPDATE_BY_DATE" not-null="true" type="timestamp" insert="false" update="false"/>
<property name="updatedByUser" column="UPDATE_BY_USER" length="20" not-null="true" insert="false" update="false"/>  

这适用于插入新记录但在更新实体时不起作用。 我想让它也适用于更新。

请咨询

由于

1 个答案:

答案 0 :(得分:0)

db中没有默认更新...您可以使用触发器或使用实体上的@PreUpdate注释更轻松地进行更新

例如

@Entity
public class Entity implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long userId;

    @Column(insertable = false, updatable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date entityCreation;

    @Column()
    @Temporal(TemporalType.TIMESTAMP)
    private Date entityUpdate;

    @PreUpdate
    public void setLastUpdate() {
        entityUpdate = new Date(System.currentTimeMillis());
    }

每次更新实体时,请将其日期设置为currentMillis