【问题标题】:JPA: How do I prevent a field from being written back into the database?JPA:如何防止字段被写回数据库?
【发布时间】:2016-03-30 01:36:03
【问题描述】:

我正在使用 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 将尝试将“NULL”写入 INSERT 语句中的“CREATED_ON”字段。如何在 JPA 中进行配置,以便在不存在值的情况下根本不会尝试写回值?我问的原因是因为默认情况下该值设置为 MySQL “CURRENT_TIMESTAMP” 值,如果插入显式“NULL”,则不使用此值。

谢谢,- 戴夫

【问题讨论】:

    标签: mysql hibernate jpa entity jpa-2.1


    【解决方案1】:

    在字段映射中试试这个

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 2011-08-28
      • 1970-01-01
      相关资源
      最近更新 更多