从JPA中的字符串中删除“无效”字符

时间:2014-07-17 07:45:22

标签: java jpa unicode

我发现我使用的数据库在某些字段中包含一些特殊字符,如ASCII控制字符(26 SUB等)。它们导致问题,因为它们使XML无效等。我希望以尽可能最透明的方式过滤掉它们。

是否可以激活JPA中的某些过滤器,它将处理从数据库读取的字符串值并将应用于每个文本字段,而无需手动进行过滤?

当我手动更改实体中的字符串字段时,应用removing invalid XML characters from a string in java中提到的过滤器可以正常工作。

1 个答案:

答案 0 :(得分:3)

您可以使用生命周期监听器。您可以在实体内或自己的类中定义侦听器回调方法。在你的情况下,我会创建一个监听器类,因为你似乎需要在多个实体中进行过滤。由于您要过滤来自数据库的数据,因此您可以使用PostLoad回调。

public class StringFilter {

  @PostLoad
  public void filter(Object obj) {
   // filterString
  }
}

然后将您的侦听器类分配给实体:

@EntityListeners({StringFilter.class})
public class  SomeEntity {
...