gpt4 book ai didi

java - hibernate 覆盖 "lazy=false"

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:21:33 33 4
gpt4 key购买 nike

我正在现有项目中开发一个新模块。该项目已经有一个用户表,一个pojo和一个对应的映射文件。问题是他们通过提及 lazy="false" 急切地获取所有属性。但是,在我的模块中,我在一个请求中进行了大量的读写操作,所以我不想急切地获取。我想知道的是,是否可以为同一个表和同一个 pojo 创建另一个映射文件来延迟加载所有属性?我已尝试为映射文件分配不同的实体名称,但在部署时,我收到错误消息“实体映射中的重复列”

我看到了this回答,但它说“不映射 child ”,那么我将如何获得代理?

最佳答案

这是使用 EAGER 抓取作为默认策略的一大缺点。通常你会有一个 LAZY child 系列,你可以 eagerly fetch on a HQL query basis .

值得一提的是HQL/Criteria queries overrule the default fetch strategy (由您的实体映射给出的那个)以便您可以明确指定要获取的内容。

对于 Criteria 查询,您可以尝试 Criteria.setFetchMode FetchMode.LAZY,尽管它已被弃用。

另一种否决 EAGER 抓取的方法是使用 javax.persistence.fetchgraph .这样,您可以指定要获取的内容,并且将延迟获取实体图中未包含的所有 EAGER 获取属性。

关于java - hibernate 覆盖 "lazy=false",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25163960/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com