1

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

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

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

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

4

1 回答 1

2

您可以使用 SessionCustomizer 来配置它,

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

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

于 2012-11-13T14:19:44.313 回答