我的JPA实体如下所示。
Employee{
String name;
String address;
String phoneNumber;
Date joiningDate;
boolean isActive;
}
我看到我们在表中插入了错误的数据用于地址,名称就像坏字符\ u000b这是新行字符。我想在插入之前一般性地处理这个数据以清理数据。 我想在dao层处理,因为这从很多地方被调用,因此想要在一个中心位置处理。像AOP这样的东西 我在做
employeeDao.save(employee);
然后执行employee.merge();
答案 0 :(得分:1)
您可以将使用@PrePersist或@PreUpdate注释的方法添加到您的实体以清理数据。在每次插入或更新之前,将自动调用此方法。
import javax.persistence.Entity;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
@Entity
public class MyEntity{
@PrePersist
@PreUpdate
private void cleanup() {
...correct your data here...
}
}
答案 1 :(得分:1)
dao / domain层不负责验证数据,而是演示和/或业务层。因此,检查客户端或业务层中的一个控制器上的数据,然后使用经过验证的数据调用域层(或抛出EInvalidXXXX异常)
答案 2 :(得分:0)
您无需在代码中处理此逻辑,hibernate
可以为您执行此操作。在hbm2ddl.auto
中将create
属性设置为hibernate.cfg.xml
,hibernate将在每次运行应用程序时删除现有表并创建一个新表。如果您不想再创建新表,请将该属性设置为update
,hibernate将在表中附加数据。
<property name="hbm2ddl.auto">create</property>