Hibernate / JPA @Postload注释是否将对象标记为“脏”?

时间:2013-12-05 15:35:45

标签: java hibernate jpa

我们正在使用Hibernate EntityManager 3.6.10(实现JPA 2)。我已经检查了JPA规范和Hibernate文档,但它似乎没有解决这个问题。

我有许多实体对象使用@PostLoad来修剪来自字符串的持久字段的尾随空格:

@Column(name="MY_DESCRIPTION", nullable=false, length=30)
 private String myDescription;

@PostLoad
private void trimStrings() {
    myDescription = myDescription.trim();
}

这会将对象标记为“脏”并产生额外的保存吗?

2 个答案:

答案 0 :(得分:2)

是的,这会将字段标记为脏,并会产生额外的保存。

答案 1 :(得分:2)

正如安德烈提到的那样,这会将物体标记为脏。如果仍需要修剪该值,则可以将修剪后的版本放入未保存的瞬态字段中,并隐藏数据库中保存的值。您还需要更新更新瞬态值时保存的属性。

或者,如果值不应该有空格,只需在DB上运行更新以从这些列中删除所有空格。