问题标签 [querydsl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Hibernate:在 HQL / QueryDSL 中使用单个连接语句初始化所有子级?
我们现在正在使用 QueryDSL 进行数据库查询,但我认为这个问题更普遍与休眠相关..
我想知道:HQL 是否将我查询的实体放入休眠上下文/缓存中,以便可以从那里访问它们?我在想,如果我leftjoin
为一个实体运行一个大数据,明确地收集所有子关系,如果我可以告诉休眠在将结果映射到我的实体对象时使用该信息,我应该能够节省延迟加载。我就是想不通怎么办。。
示例:
A 有 Bs,B 有 Cs。现在,如果我fetch all
为某个 A 构建查询并将其与 Bs 和 Cs 连接(查询 DSL 实现):
我会得到一个很好的 SQL 语句,上面写着
所以结果应该足以让hibernate初始化
但它不会这样做,而是会运行查询
是否有可能通过初始化一个包含所有子节点的实体来减少这些延迟加载,还是我希望太多?
如果我使用连接加载所有数据,休眠会将它们放在其缓存中,并且它会访问该缓存以进行那些延迟加载还是会轮询数据库?我对此有发言权还是完全不在我的掌控之中?
谢谢@大家!
java - 使用 Querydsl 和 ConstructorExpression.create() 构建 DTO:s
我有一个涉及 querydsl 和 DTO:s 的问题
我有一些查询对象:
我尝试从它们中查询并列出名为 CompletedCreditsSummary 的 DTO 类(不是实体)的实例。CompletedCreditsSummary 有一个构造函数,它采用:Long、Long、Float。
我能够做到这一点(没有 group by 和 CompletedCreditsSummary 需要能够创建人员和程序对象所需的所有参数,在这种情况下简化为 person.id 和 program.id)
这行得通。但是当我想将此添加到查询中时:
并使用examCode.credits.sum() 创建CompletedCreditssummary,即
代替
我得到一个:java.lang.IllegalArgumentException:参数类型不匹配。
这里的问题是examcode.credits (NumberPath) 和examcode.credits.sum() (NumberExpression) 之间的区别以及我可以做些什么来解决我的问题。
当我通过反复试验学习 querydsl 时,我可能忽略了一些基本的东西。非常感谢任何帮助!
问候拉斯穆斯
编辑:最好我会这样做(使用 group by 和 CompletedCreditsSummary 构造函数采用 Person、Program、Float。):
编辑:通过让 CompletedCreditsSummary 构造函数接受:Long,Long,Number 使其工作。那就是我将浮点数更改为数字。这不是一个理想的解决方案,但至少它有效。
jpa-2.0 - JPA2 标准中 From 子句中的子查询
我有一个数据模型,其中一个帐户可以有多个用户:
我想做以下查询,显示每个帐户的用户数:
我知道我可以将这个特定的查询重写为:
但我计划为需要多个分组依据的报告创建更复杂的查询。我在这里读到了关于多个分组的正确方法。
如何使用 JPA2 Criteria API 创建查询?
spring - 如何使用 Spring JPA 进行分页 QueryDSL 查询?
QueryDSL 定义了一个接口和一个实例,可以通过调用或OrderSpecifier
轻松获得任何字段的接口和实例。Spring Data JPA的接口甚至还有一个以s 为参数的方法。asc()
desc()
QueryDslPredicateExecutor
findAll()
OrderSpecifier
org.springframework.data.domain.PageRequest
然而,对 QueryDSL 一无所知,它有自己的方式来定义查询排序顺序,即org.springframework.data.domain.Sort
. 它可以包含许多与org.springframework.data.domain.Sort.Order
s 非常相似OrderSpecifier
的 s,只是它们不是类型安全的等。
那么,如果我想进行使用排序的分页查询,真的没有办法使用 QueryDSL 来定义它吗?
java - QueryDSL 简单查询不会转换为对象
我正在针对 MySql 中的 World 数据库测试 QueryDSL。我可以将数据作为列表检索,但无法将其作为列表返回。我正在通过 SQL 查询,仅此而已。这就是我所拥有的。
我收到此错误:
java.lang.IllegalArgumentException: RelationalPath based projection can only be used with generated Bean types
maven-plugin - 运行“mvn apt:process”时“需要指定一个或多个处理器”
我正在尝试让 QueryDSL 参与 Spring Roo 项目。
这是我的插件配置:
当我运行以下命令时:mvn apt:process
,我收到以下错误:
当然,我已经尝试过 mvn install ,它不会生成任何源。
欢迎任何建议。
编辑: maven-apt-plugin 的唯一输出是:
java - 返回计算结果为 true 的 QueryDSL BooleanExpression
假设我有CustomerQueryInfo
具有以下属性的 bean:
- 字符串名
- 字符串姓氏
- Status枚举状态
我想使用此类型的对象执行“ QueryDSLList<Customer>
”搜索,该对象将返回客户列表。
如果其中一个字段CustomerQueryInfo
是null
,我不想在搜索中使用它。因此CustomerQueryInfo
,所有三个字段都设置为null
的对象将返回所有客户。
我正在寻找使用 QueryDSL 执行此类搜索的最佳实践。
像这样可以吗:
然后:
- 我如何返回一个
BooleanExpression
评估为真的? - 如果上述方法不可取,那么推荐的最佳做法是什么?
java - 休眠搜索中的通配符查询
我们正在使用 Hibernate 搜索来搜索在我的实体中注释的 lucene 索引。我必须返回一个包含 keyString 的字符串列表,基本上是一个子字符串操作。这是我的代码
此操作是获取所有字符串并执行子字符串操作还是在 lucene 上调用 WildcardQuery。
感谢有人帮助我使用 WildCardQuery 进行休眠搜索
java - Querydsl 更新子句填充跳过 bean 空值属性
在使用带有 bean 的空值属性的填充调用时,我遇到了 SQLUpdateClause 的问题。它只是从生成的更新 SQL 中跳过空值属性,而不是将相应的字段设置为 NULL。
例子:
将产生 SQL:
而不是想要的:
这里有什么帮助吗?... 请
java - QueryDSL 中的多列
我正在尝试使用 QueryDSL 从我的表中获取多个列的列表,并自动填充我的 DB 对象,就像旧手册中的这个示例:
问题是看起来 EConstructor 类在 2.2.0 版本中被删除了,而我现在找到的所有示例都是这样的:
这迫使我手动将所有对象投射到我的 CatDTO 类中。
有没有其他选择?任何 EConstructor 替代方案?