我目前正在遇到可能达到极限的情况。
我正在使用Java和Hibernate3进行ORMapping。当我在遗留代码上开发时,重构是不可能的。特别是我所谈论的可选实体可能已经被继承了,但今天不仅仅是这种情况。
我有一个RootEntity(R)有2个可选实体(A)和(B)。至少有一个实体是根实体的子实体:
(A) <---(R)---> (B)
我的配置文件强制加载集合,条件定义别名。我最终有一个很长的查询, DOES 加载所有必要元素的所有行:
(A) <---(R)---> (B)
我使用Hibernate源进入调试模式,Hydration在找到时会正确构造(R),(A)或(B)。
问题 :在水化阶段之后,Hibernate将无法找到其中一个实体。如果已加载A,则会尝试加载B;如果已加载B,则会尝试加载A.
这将导致每行的可选查询:
- 可能无法检索任何行
- 可以检索一些不必要的行(外键ID会有一些对应,但这不会在应用程序中使用)
问题 :如何根据(R)的行和类型忽略加载不需要的实体(或者(根据) A)或(B))“?
提前致谢