Java Hibernate/JPA@Postload注释是否将对象标记为;肮脏;?
我们正在使用Hibernate EntityManager 3.6.10(实现JPA2)。我已经检查了JPA规范和Hibernate文档,但它似乎没有解决这个问题 我有许多实体对象,它们使用@PostLoad从字符串的持久字段中修剪尾随空格:Java Hibernate/JPA@Postload注释是否将对象标记为;肮脏;?,java,hibernate,jpa,Java,Hibernate,Jpa,我们正在使用Hibernate EntityManager 3.6.10(实现JPA2)。我已经检查了JPA规范和Hibernate文档,但它似乎没有解决这个问题 我有许多实体对象,它们使用@PostLoad从字符串的持久字段中修剪尾随空格: @Column(name="MY_DESCRIPTION", nullable=false, length=30) private String myDescription; @PostLoad private void trimStrings() {
@Column(name="MY_DESCRIPTION", nullable=false, length=30)
private String myDescription;
@PostLoad
private void trimStrings() {
myDescription = myDescription.trim();
}
这会将对象标记为“脏”并生成额外的保存吗 是的,这会将字段标记为脏,并生成额外的保存。正如Andrei提到的,这会将对象标记为脏。如果仍然需要修剪值,可以将修剪后的版本放在未保存的临时字段中,并隐藏保存在数据库中的值。您还需要更新更新瞬态值时保存的属性
或者,如果该值不应包含空格,则只需在DB上运行更新,以删除这些列中的所有空格。不幸的是,DB都是固定长度的空格填充字段,并且设计不可协商(ugh)。