JPA Spec 假定,一般来说,大多数应用程序都要求单例关系缺省急切,而多值关系缺省情况下是惰性的。至少在我自己的经验中,这通常是所需的架构。这是有道理的,因为单例关系不需要在 JPA 层和数据库层中显著的额外性能即可在外键上创建单例连接。然而,与此相反的是,多值属性要么创建 N + 1 个问题,要么创建大型笛卡尔结果集,当使用连接提取时,随着集合中的元素数和连接数的增加,结果集呈指数级膨胀(尽管 Hibernate 特别无法处理 2 个以上 eager 关联的连接提取)。
话虽如此,至于您的建议,您需要解决一个特定的(说实话并非完全不常见)案例。现在你有一个单一的案例,但因为有数百个这样的案例。因此,要编写规范,您需要在泛化和粒度之间划清界限。
如果我站在你的立场上,如果你认为这是一个绝对有用的功能,可以添加到JPA规范中,我会把它提交给JCP。另一方面,如果你在特定的实现中解决了这个(,那个和那个...),那么你最终会进入所谓的供应商锁定。因此,我会多花一个小时来设置@ManyToOne @OneToOne属性的惰性获取,并保持无供应商状态,因此,如果一个新的JPA实现比Hibernate(或你使用的任何实现)快15倍以上,那么通过坚持规范,将你的项目移动到新的JPA实现中几乎不需要任何努力。