也许我的问题是愚蠢的,我不知道我在说什么,但仍然如此。有什么方法可以全局强制eclipselink(持久性单元或实体管理器配置),以避免从L1缓存中提取相同类型的获取的实体(如果是这种情况)?
示例:
假设我有一个用@Cacheable(false)
注释的实体,但除了关闭编织之外没有其他实体管理器属性。因此,如果我对同一个ID执行一次findById()
,那么这两次调用返回的内存中的实际对象对我来说是相同的。
此外,当您有2个通过外键(例如Employee-> Department)连接的表时,这将成为一个真正的令人头疼的问题。首先,您获取包含子项“部门”的父对象“雇员”(通过自省)。之后,您出于另一个目的(例如,填充选择字段以提供相关父属性的可能更改,即将员工移至另一个部门),分别获取相同的子对象“部门”。这里的问题是“雇员”将指向内存“部门”中与单独获取的对象(我的选择列表中的对象之一)完全相同的对象。因此,基本上,我需要始终保持意识到,当我通过父级更改父级孩子的某个东西时,实际上是修改了我选择的组合字段对象之一。
奇怪的是,我在运行ex时没有得到这种行为。在WildFly(带有集成的eclipselink 2.7)中,但是当它是Spring Boot或某个简单的外部容器(相同的eclipselink版本)时,它每次都会发生。
此外,在期待一些评论的同时,我知道我正在努力解决缓存被发明的原因,而我的问题更多与不良做法有关,但是,在我的特殊情况下,这是我需要的旧的且书写不佳的系统迁移到Spring Boot,除了完全重写之外,我不知道该怎么做。
有什么想法吗?
P.S。如果我的叙述没有完整解释问题,我可以提供一些代码。