java - 从 JPA 中的字符串中删除 'invalid' 个字符

标签 java jpa unicode

我发现我正在使用的数据库在某些字段中包含一些特殊字符,例如 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/

相关文章:

java - 如何以编程方式更新 Nexus 中的 maven-metadata 文件

java - 我可以在旧版本的 elasticsearch 上使用更新版本的 java 高级休息客户端吗?

java - JPA/hibernate : CriteriaBuilder - How to create query using relationship object?

java - 是否有像 Perl 5 的 Text::Unidecode 这样的 Java 库?

java - 为什么 '?' 在 java 中打印 unicode 字符时显示为输出

java - 在 xtned 中导入静态方法(生成的 java)

java - 为什么 matcher.group 给我一个错误?

java - 我可以在 EJBQL 中通过未映射到数据库列的函数进行排序吗?

java - 中间表和非主键的一对一映射

c++ - 将 emoji unicode 从 cpp 核心级别传递到 ios ui 级别