带有连接的查询结果在转换为 POJO 列表时失去顺序

米格鲁桑特

我正在使用 JOOQ 创建对 Oracle 12 数据库的本机查询。当我将结果转换为我的 POJO 时,来自 order by 子句的订单丢失了。

基本上我加入了两个表,任务和变量。一个任务可以有很多变量。

我通过这种方式将结果转换为我的 POJO:

select.fetchGroups(Task.class, Variable.class);

public class Task{

    private String id;

    private String name;

    private String formKey;

        private List<Variable> variables = new ArrayList<Variable>();


getters()/setters()

...

hashCode()

...

equals()

}

public class Variable{

    private String vId;
    private String vName;
    private String vValue;
    private String vType;

getters()/setters()

...

hashCode()

...

equals()


}

我试图在选择结束时手动“插入”我的 order 子句(因为没有找到使用 jooq sintax 构建它的方法,对此的一些见解将不胜感激):

jooq dslcontext

@Autowired
private DSLContext dsl;

填充的列表

Map<Task, List<Variable>> response;

按句子的简单顺序。

String orderClause = " case when V.NAME_ = '"+sortColumn+"' then V.TEXT_ end "+sortDirection;

(如果我记录这个的纯 SQL,结果是正确排序的)

SelectSeekStep1<Record, Object> selectOrdered = select.orderBy(DSL.field(orderClause));

response = selectOrdered.fetchGroups(Task.class, Variable.class);

此时我的响应变量已经是一个地图,但是顺序丢失了。

没有错误消息或异常,地图按预期返回,但订单丢失。

如果我遗漏了一些关键细节,请告诉我,我会添加它。

卢卡斯·埃德

各种fetchGroups()方法LinkedHashMap在幕后使用 a ,它们返回给您,并以获取顺序迭代记录,因此您为 jOOQ 查询提供的任何顺序对于这些方法都是稳定的。

从您所展示的内容来看,您正在按某些V列进行排序,这可能代表Variable. 您不可能期望Task在客户端分组时保留该顺序,尽管每个 Task. 我来举例说明。如果这是您从数据库中获得的信息(因为您按变量排序):

TASK    VARIABLE
1       A
2       B
3       C
1       D
2       E

然后,这些fetchGroups()方法将产生以下客户端分组:

TASK = 1
  VARIABLE = [A, D]
TASK = 2
  VARIABLE = [B, E]
TASK = 3
  VARIABLE = [C]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将JSON列表转换为POJO

来自分类Dev

将对象值列表转换为 POJO

来自分类Dev

带有未命名列表的 Pojo

来自分类Dev

java将对象数组列表转换为POJO

来自分类Dev

使用jackson在java中将pojo(对象列表)转换为json

来自分类Dev

为什么我的属性在转换为 pojo 时无法识别

来自分类Dev

JOOQ-将结果转换为Pojo

来自分类Dev

将Spark SQL DataFrame转换为Pojo列表的最有效方法

来自分类Dev

“部分”排序POJO的列表

来自分类Dev

将jsonnode转换为pojo

来自分类Dev

Spring - 将 pojo 转换为 JSON 时出现问题(未找到转换器错误)

来自分类Dev

当未从查询执行中接收到任何数据时,映射到pojo列表的JPA命名查询的结果不会返回空列表

来自分类Dev

apache poi-将Pojo列表转换为HSSFSheet的任何方法?

来自分类Dev

使用Jackson Fasterxml将Cucumber DataTable转换为POJO时无法找到字段

来自分类Dev

转换为Pojo时,简单的json结构会引发错误

来自分类Dev

Java 8:将POJO转换为映射列表-ID-POJO = Stream中的映射(Function <?super C,?>)无法应用于(<lambda expression>,<lambda expression>)

来自分类Dev

查询结果而不存储在POJO中?

来自分类Dev

POJO getter 返回 JPQL 查询结果?

来自分类Dev

在没有默认POJO构造函数的情况下将POJO转换为XML

来自分类Dev

从Firebase检索父POJO中POJO的数组列表

来自分类Dev

将大POJO转换为案例类

来自分类Dev

使用JsonView将POJO转换为JsonNode

来自分类Dev

POJO JAXB批注未转换为XML

来自分类Dev

将POJO转换为JavaFX属性

来自分类Dev

使用JAXB将JSON转换为POJO

来自分类Dev

DataWeave XML到POJO的转换

来自分类Dev

Json 对象到 pojo 的转换

来自分类Dev

将 Map<String, String> 转换为 POJO 列表 - java.lang.IllegalStateException:预期为 BEGIN_ARRAY 但为 STRING

来自分类Dev

创建一个内部有Pojo的Pojo?

Related 相关文章

  1. 1

    将JSON列表转换为POJO

  2. 2

    将对象值列表转换为 POJO

  3. 3

    带有未命名列表的 Pojo

  4. 4

    java将对象数组列表转换为POJO

  5. 5

    使用jackson在java中将pojo(对象列表)转换为json

  6. 6

    为什么我的属性在转换为 pojo 时无法识别

  7. 7

    JOOQ-将结果转换为Pojo

  8. 8

    将Spark SQL DataFrame转换为Pojo列表的最有效方法

  9. 9

    “部分”排序POJO的列表

  10. 10

    将jsonnode转换为pojo

  11. 11

    Spring - 将 pojo 转换为 JSON 时出现问题(未找到转换器错误)

  12. 12

    当未从查询执行中接收到任何数据时,映射到pojo列表的JPA命名查询的结果不会返回空列表

  13. 13

    apache poi-将Pojo列表转换为HSSFSheet的任何方法?

  14. 14

    使用Jackson Fasterxml将Cucumber DataTable转换为POJO时无法找到字段

  15. 15

    转换为Pojo时,简单的json结构会引发错误

  16. 16

    Java 8:将POJO转换为映射列表-ID-POJO = Stream中的映射(Function <?super C,?>)无法应用于(<lambda expression>,<lambda expression>)

  17. 17

    查询结果而不存储在POJO中?

  18. 18

    POJO getter 返回 JPQL 查询结果?

  19. 19

    在没有默认POJO构造函数的情况下将POJO转换为XML

  20. 20

    从Firebase检索父POJO中POJO的数组列表

  21. 21

    将大POJO转换为案例类

  22. 22

    使用JsonView将POJO转换为JsonNode

  23. 23

    POJO JAXB批注未转换为XML

  24. 24

    将POJO转换为JavaFX属性

  25. 25

    使用JAXB将JSON转换为POJO

  26. 26

    DataWeave XML到POJO的转换

  27. 27

    Json 对象到 pojo 的转换

  28. 28

    将 Map<String, String> 转换为 POJO 列表 - java.lang.IllegalStateException:预期为 BEGIN_ARRAY 但为 STRING

  29. 29

    创建一个内部有Pojo的Pojo?

热门标签

归档