使用jooq保留where-in的结果顺序

kkih6yb8  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(315)

问题已经按价值清单的顺序详细描述了,
但要重复:我想按特定顺序选择ID为1、3、2、4的项。
我的jooq片段:

var results = create.select().from(ITEM).where(ITEM.ID.in(1,3,2,4)).fetchInto(Item.class);

结果 results 列表中的项目按1、2、3、4的顺序排列。如何与jooq保持项目的顺序?

lx0bsm1f

lx0bsm1f1#

你可以用 Field.sortAsc() 为此:

create.select()
      .from(ITEM)
      .where(ITEM.ID.in(1, 3, 2, 4))
      .orderBy(ITEM.ID.sortAsc(1, 3, 2, 4))
      .fetchInto(Item.class);

当然,为了避免重复列表,请使用局部变量:

Integer[] ids = { 1, 3, 2, 4 };
create.select()
      .from(ITEM)
      .where(ITEM.ID.in(ids))
      .orderBy(ITEM.ID.sortAsc(ids))
      .fetchInto(Item.class);

请参阅本文中有关排序间接寻址的内容。

相关问题