gpt4 book ai didi

java - QueryDSL 中的多列

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

我正在尝试使用 QueryDSL 从我的表中获取多列的列表,并自动填充我的 DB 对象,就像旧手册中的这个示例:

List<CatDTO> catDTOs = query.from(cat)
.list(EConstructor.create(CatDTO.class, cat.id, cat.name));

问题是2.2.0版本好像去掉了EConstructor类,现在找的例子都是这样的:

List<Object[]> rows = query.from(cat)
.list(cat.id, cat.name);

这迫使我手动将所有对象转换到我的 CatDTO 类中。

除此之外还有其他选择吗?任何 EConstructor 替代品?

最佳答案

在 Querydsl 2.0 中,EConstructor 已被 ConstructorExpression 取代。所以你的例子会变成

List<CatDTO> catDTOs = query.from(cat)
.list(ConstructorExpression.create(CatDTO.class, cat.id, cat.name));

您还可以像这样注释 CatDTO 构造函数和查询

List<CatDTO> catDTOs = query.from(cat)
.list(new QCatDTO(cat.id, cat.name));

或者,您可以使用提供更通用访问选项的 QTuple 投影

List<Tuple> rows = query.from(cat)
.list(new QTuple(cat.id, cat.name));

可以像这样通过它们的路径访问实际值

tuple.get(cat.id)

tuple.get(cat.name)

元组投影可能会在 Querydsl 3.0 中用于多列投影而不是对象数组。

关于java - QueryDSL 中的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12427665/

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