JPA:如何防止字段被写回数据库?
JPA: How do I prevent a field from being written back into the database?
我正在使用 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)
我正在使用 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)