JPA:如何防止将字段写回数据库?

时间:2015-12-23 15:18:56

标签: mysql hibernate jpa entity jpa-2.1

我正在使用Hibernate 4.3.6.Final,JPA 2.1,MySQL 5.5.37和Spring 3.2.11.RELEASE。我有一个具有以下字段和getter(没有setter)的实体......

@Column(name="CREATED_ON")
private java.util.Date createdOn = new java.util.Date();

public java.util.Date getCreatedOn()
{
    return createdOn;
}   // getCreaetdOn

我注意到当我执行JPA保存事务时,例如......

public T save(T obj)
{
    if (obj != null)
    {
        final T id = (T) getId(obj);
        if (id == null)
        {
            m_entityManager.persist(obj);
        }
        else
        {
            obj = m_entityManager.merge(obj);
        }   // if
    }   // if
    return obj;
} 

Hibernate / JPA将尝试在INSERT语句的“CREATED_ON”字段中写入“NULL”。如何在JPA中配置内容,以便在没有值的情况下,它不会尝试回写值?我问的原因是因为默认情况下该值设置为MySQL“CURRENT_TIMESTAMP”值,如果插入显式“NULL”,则不使用该值。

谢谢, - 戴夫

1 个答案:

答案 0 :(得分:0)

尝试使用字段映射

@Column(name="CREATED_ON", insertable = false, updateable = false)