我们正在将一个项目从Querydsl版本3更新到版本4。子查询的工作方式发生了变化。在版本3中,可以编写如下子查询:
ListSubQuery<Long> subQueryResult = new JPASubQuery()
.from(domain)
.where(domain.prefix.eq(prefix))
.list(domain.id);
我将代码升级到:
JPQLQuery<Long> subQueryResult = from(domain)
.select(domain.id)
.where(domain.prefix.eq(prefix))
.fetchAll();
我的问题是关于我在查询末尾添加的fetchAll方法。我不确定是否有必要。我认为它是list的替代品,但我的同事指出返回类型只是JPQLQuery,它已经由where返回。
用于fetchAll状态的JavaDoc:
将“fetchJoin all properties”标志添加到最后定义的连接。
这对我来说毫无意义。实验似乎表明调用是不必要的,但这仍然留下了一个问题——它的用途是什么?我可以安全地将它从我的子查询中删除吗?
你需要一个 fetchJoin()
来实际加载标记为“懒惰”的属性。对于您的示例(仅加载 domain.id
值)来说,这没有多大意义,但是如果您开始在子查询中加载复杂的数据类型,则可能实际上希望根查询中存在数据。
话虽如此,具有具有“大量”惰性属性的复杂数据类型,您可能不希望/需要将 fetch 标志添加到所有这些属性中,而只需要添加到查询实际需要的那些。因此,仅仅调用 fetchAll 可能不是您一直需要的。如有疑问,我建议启用sql日志记录并分析生成的sql,每个JOIN FETCH
都是一个急切的负载。
我可以安全地从我的子查询中删除它吗?
因此,TL;DR:如果您过去从未想过JOIN FETCH
,那么实际上:是的,您应该能够安全地忽略fetchAll
这可能出现在许多常见问题解答中,而不是使用: (这叫无用猫),正确的做法应该是: 在第二种“正确”的方式中,操作系统不必生成额外的进程<尽管知道这一点,我还是继续使用无用的猫,原因有二。 > 我“觉得”在某些情况下可能会更快。速度更快,因为有两个进程,第一个(cat)执行读取,第二个执行任何操作。它们可以并行运行,这意味着有时执行速度更快。 我的逻辑正确吗(第二个原因)?
主要内容:XML 把数据从 HTML 分离,XML 简化数据共享,XML 简化数据传输,XML 简化平台变更,XML 使您的数据更有用,XML 用于创建新的互联网语言,假如开发人员都是理性的XML 应用于 Web 开发的许多方面,常用于简化数据的存储和共享。 XML 把数据从 HTML 分离 如果您需要在 HTML 文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑 HTML。 通过 XML,数据能够存储在独立的 XML 文件中。这样您就可以专注于使用 HTML/CSS 进行显示和布局
此分区已移至 声明性映射 . 定义属性 本节包括 映射表列 访问元数据 此分区已移至 访问表和元数据 . 类构造函数 作为一项便利功能, declarative_base() 为接受关键字参数的类设置默认构造函数,并将其分配给命名属性: e = Engineer(primary_language='python') 映射器配置 此分区已移至 具有声明性的映射器配置选项 . 定义SQL表达式 见 作
使用指南 - 数据报告 - 来源分析 - 指定广告跟踪的用途与使用 1、指定广告跟踪的用途 指定广告跟踪将提供您各种其它媒介推广为您网站带来的流量情况。通过对各种媒介推广给您网站带来的流量对比,您可以了解哪种媒介推广能够给您网站带来较多的流量,哪种媒介推广给您网站带来的流量质量较高。基于各种媒介推广带来的不同流量及流量质量,您可以进一步比较分析在各种媒介上的关键词和创意,了解哪些关键词和创意更能够
问题内容: 我正在寻找 Java 日历类的一些子类,最好是Hijri(伊斯兰)日历实现,但是可能需要更多的子类。有谁知道可用于商业用途的图书馆? 我已经找到了IBM的ICU库(在此处),但是它们没有扩展,而是编写了自己的类,该类也对定制类进行了响应。和。我正在尝试I18n一个已有的Java应用程序,该应用程序已经有超过400种Calendar用法,因此我理想地希望坚持使用该类。有什么建议? 提前致
问题内容: Node.js module.exports的用途是什么,如何使用它? 我似乎找不到任何相关信息,但是正如我在源代码中经常看到的那样,它似乎是Node.js的重要组成部分。 根据Node.js文档: 模组 对当前的引用 。特别 是与导出对象相同。请参阅 以获取更多信息。 但这并没有真正的帮助。 究竟是做什么的,一个简单的例子是什么? 问题答案: 是调用结果实际返回的对象。 该变量最初设
本文向大家介绍Kafka的用途有哪些?使用场景如何?相关面试题,主要包含被问及Kafka的用途有哪些?使用场景如何?时的应答技巧和注意事项,需要的朋友参考一下 总结下来就几个字:异步处理、日常系统解耦、削峰、提速、广播 如果再说具体一点例如:消息,网站活动追踪,监测指标,日志聚合,流处理,事件采集,提交日志等