After lots of try and error this works, but is it the "correct" way?
CustomerobjectdbObject o = CustomerobjectdbObject.CUSTOMEROBJECTDB_OBJECT.as("o");
CustomerobjectdbHistory h = CustomerobjectdbHistory.CUSTOMEROBJECTDB_HISTORY.as("h");
CustomerobjectdbHistory l = CustomerobjectdbHistory.CUSTOMEROBJECTDB_HISTORY.as("l");
Condition c = getTenantCondition(o);
//@formatter:off
var fetch = db.select(o.NAME,
o.STATUS.convertFrom(x -> ObjectSafetyStatus.from(x)),
o.CHANGED_AT,
l.MAJOR_VERSION,
l.MINOR_VERSION,
l.COMMENT)
.from(o,
lateral(DSL.select(h.MAJOR_VERSION,
h.MINOR_VERSION,
h.COMMENT)
.from(h)
.where(h.OBJECT_ID.eq(o.ID))
.orderBy(h.MAJOR_VERSION.desc(),
h.MINOR_VERSION.desc())
.limit(1)).as(l)
)
.where(c)
.orderBy(o.CHANGED_AT.desc())
.limit(10)
.fetch(mapping((r1, r2, r3, r4, r5, r6) -> new HomeObjectTableUIModel(r1, r2, r3, r4, r5, r6)));
//@formatter:on
return fetch;