mysql - JPA:如何防止字段被写回数据库?

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

谢谢,-戴夫

最佳答案

尝试使用此方法进行字段映射

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

关于mysql - JPA:如何防止字段被写回数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34438697/

相关文章:

java - 查询中的单个添加标量

hibernate - 在java中使用@Filter hibernate注解过滤集合

java - 无法使用 Mapstruct 生成没有输入参数的映射方法

java - Spring Data JPA + JpaSpecificationExecutor + EntityGraph

java - Hibernate删除了一条记录,但是记录并没有消失?

php - 使用 while 从查询中排序信息?

mysql - 如何进行查询

php - 保护具有数据库写权限的文件

mysql - 设计一个单元格有多个引用的表格的最佳方法?

java - Spring Data JPA 存储库抛出空指针