众所周知,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/