java - Oracle 将空字符串转换为 null 但 JPA 不会相应地更新实体缓存

标签 java oracle jpa jakarta-ee

众所周知,Oracle 将空字符串视为 null。

但是,由于 JPA 的缓存导致的这种行为,我遇到了问题。

首先我坚持使用 JPA (Toplink Essentials) 一个实体,它有一个空字符串作为一个字段。 Oracle 在存储时将该值转换为 null。

但是,当我获取实体时,JPA 似乎从缓存中返回它,其中该字段仍然是一个空字符串。 JPA 似乎不知道,存储到数据库中的实际上是一个空值,这种不一致导致了问题。

有没有办法在 JPA 或应用程序服务器 (Oracle AS) 配置级别解决此问题?这是我不想在应用程序级别修复的东西(但如果有必要,我会修复)。

最佳答案

我们已经迁移到支持@ReturnInsert 和@ReturnUpdate 注释的EclipseLink。这些有助于使用实际存储到数据库中的值刷新字段。

关于java - Oracle 将空字符串转换为 null 但 JPA 不会相应地更新实体缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/653521/

相关文章:

oracle - 如何避免在 SCHEMA 更改后破坏临时表中的查询?

sql - 查询返回升序组编号

java - 为什么我的数据仅在读取时刷新到数据库?

java - persistence.xml 中的序列生成器

java - ManyToMany - 删除 Join 表中的条目

Tomcat 8 根路径上的 Java Web Maven 项目。如何?

java - Gradle - 无法展开 zip cardview-v7-23.3.0.aar

java - Android Fragment不显示

java - 如何动态决定我想要多少个循环?

java - eclipse-link上可以安装oracle驱动吗?或者在 Glassfish 里?或在哪里以及如何?