oracle - 使用 eclipselink 时避免 CHAR 修剪

标签 oracle jpa char eclipselink trim

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

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

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

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

最佳答案

您可以使用 SessionCustomizer 来配置它,

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

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

关于oracle - 使用 eclipselink 时避免 CHAR 修剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13352818/

相关文章:

oracle - Plsql 将数字(货币)拼写为意大利货币,无需硬编码翻译数字

oracle - 在Oracle/PLSQL中增加Datetime时出错

jpa - 用于从 select row_number() over() 中选择的 JPQL

mysql - 您可以将 CHAR 设置为 NULL 或空字符串吗?

c - 获取一定长度的字符串。

sql - 检查给定的 DB 对象是否在 Oracle 中使用?

sql - 查询单行中一个元素的父条目和子条目

java - Spring Boot 数据插入一行,其中包含已保存到数据库的数据

java - 在 JPA 中使用 LocalDateTime 和 @Version 注释

c - 如何声明一个 char* 数组的数组?