您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

了解在联接表上为一对多和多对一生成的查询

了解在联接表上为一对多和多对一生成的查询

对于OneToMany情况,一个人有一个地址集合。集合可以有0,一个或多个地址。该集合懒惰地填充。因此,当从数据库中加载人员时,将执行第一个查询获取人员的字段(姓名等)。Hibernate尚不知道此人是否有地址,因此不在乎。它将地址集合设置为惰性集合。第一次在此惰性集合上调用方法时,将执行第二个查询以加载人员的所有地址并填充该集合。

对于ManyToOne情况,一个人的字段地址类型为Address。当您加载一个人时,Hibernate应该将此字段初始化为什么。如果将其设置为null并且您要求提供地址,则即使该人有地址,它也将返回null。如果将其设置为惰性地址代理,而您要求提供地址,则即使该人没有地址,它也将返回非空代理,这也是错误的。因此,Hibernate必须知道此人是否有地址。如果没有,则将该字段设置为null。如果有一个,它将地址设置为地址代理。这就是执行附加的左外部联接的原因:知道此人是否有地址(以及该地址的ID是什么,如果有的话)。

其他 2022/1/1 18:51:11 有528人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶