El problema ya se ha descrito en detalle en ORDEN POR la lista de valores IN ,
pero para repetir: quiero seleccionar elementos con ID 1,3,2,4 en ese orden específico.
Mi fragmento de jOOQ:
var results = create.select().from(ITEM).where(ITEM.ID.in(1,3,2,4)).fetchInto(Item.class); La lista de results resultante tendrá elementos en orden de 1,2,3,4. ¿Cómo puedo conservar el orden de los artículos con jOOQ?
Puede usar Field.sortAsc() para esto:
create.select() .from(ITEM) .where(ITEM.ID.in(1, 3, 2, 4)) .orderBy(ITEM.ID.sortAsc(1, 3, 2, 4)) .fetchInto(Item.class);O, por supuesto, para evitar repetir la lista, utilice una variable local:
Integer[] ids = { 1, 3, 2, 4 }; create.select() .from(ITEM) .where(ITEM.ID.in(ids)) .orderBy(ITEM.ID.sortAsc(ids)) .fetchInto(Item.class);