Hibernate/JPA @Postload注解会标记对象为“脏对象”吗?

3
我们正在使用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个回答

2

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


2

正如Andrei所提到的,这将标记对象为dirty。如果您仍然需要修剪值,则可以将修剪后的版本放入不保存的暂态字段中,并隐藏保存在数据库中的值。您还需要在更新暂态值时更新保存的属性。

或者,如果该值不应具有空格,则在数据库上运行更新以从这些列中删除所有空格。


不幸的是,数据库全部都是固定长度的空格填充字段,而且设计是不可协商的(呃)。 - user1071914

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接