我们正在使用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();
}
这会将对象标记为“脏”并产生额外的保存吗?
答案 0 :(得分:2)
是的,这会将字段标记为脏,并会产生额外的保存。
答案 1 :(得分:2)
正如安德烈提到的那样,这会将物体标记为脏。如果仍需要修剪该值,则可以将修剪后的版本放入未保存的瞬态字段中,并隐藏数据库中保存的值。您还需要更新更新瞬态值时保存的属性。
或者,如果值不应该有空格,只需在DB上运行更新以从这些列中删除所有空格。