使用 eclipselink 时避免 CHAR 修剪



我有一些 Oracle 表,其中一些 PK 字段定义为 CHAR(9),并且所有值都用填充存储。

因此,我必须在键字段中检索所有带有空格填充的对象。但是,当 EclipseLink 将数据读入对象时,空格会被修剪掉。由于这发生在 ID 值上,因此我无法使用@PostLoad来"修复"键,使其包含空格。

我无法删除/更新对象,因为键值已更改为修剪后的值,并且任何更新/删除都会错过键值。

如何配置我的持久性单元,使其不会修剪 CHAR 列的值?

您可以使用 SessionCustomizer 来配置它,

public MyCustomizer implements SessionCustomizer {
  public customize(Session session) {
    session.getLogin().setShouldTrimStrings(false);
  }
}

但一般来说,使用 CHAR 而不是 VARCHAR 通常是一个非常糟糕的主意。

最新更新