我发现我正在使用的数据库在某些字段中包含一些特殊字符,例如 ASCII 控制字符(26 SUB 等)。它们导致了问题,因为它们使 XML 无效等。我想尽可能以最透明的方式将它们过滤掉。
是否可以在 JPA 中激活一些过滤器,它将处理从数据库读取的字符串值并将应用于每个文本字段,而无需手动进行过滤?
应用像 removing invalid XML characters from a string in java 中提到的那些过滤器有效,当我手动更改实体中的字符串字段时。
最佳答案
您可以使用生命周期监听器。您可以在实体内部或自己的类中定义监听器回调方法。在您的情况下,我会创建一个监听器类,因为您似乎需要在多个实体中进行过滤。由于您想要过滤来自数据库的数据,您可以使用 PostLoad
回调。
public class StringFilter {
@PostLoad
public void filter(Object obj) {
// filterString
}
}
然后将您的监听器类分配给实体:
@EntityListeners({StringFilter.class})
public class SomeEntity {
...
关于java - 从 JPA 中的字符串中删除 'invalid' 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24797675/