In current query no format is given as an argument to TO_CHAR function. That's why it cannot do much else than fall back to default. As documented, more than one arguments can also be passed to database function via CriteriaBuilder.function:
query.multiselect(
cb.function("TO_CHAR",
String.class,transaction.get("dbdate"),
cb.literal("yyyy-MM-dd")));