我有两条记录对应两个不同的表(recordA、tableA、recordB 和 tableB)。TableA 和 TableB 具有相同的列名和相同的类型。我如何使用 Jooq 选择它们并将结果映射到不同的记录?
我尝试过这种方法:
fun findEntitiesByGroupId(groupId: UUID): ResultData {
val entityAQuery = DSL.using(configuration)
.selectFrom(ENTITY_A)
.where(ENTITY_A.GROUP_ID.eq(groupId))
val entityBQuery = DSL.using(configuration)
.selectFrom(ENTITY_B)
.where(ENTITY_B.GROUP_ID.eq(groupId))
val entityA = mutableListOf<EventHistory>()
val entityB = mutableListOf<EventHistory>()
entityAQuery.unionAll(entityBQuery).forEach {
when (it) {
is EntityARecord -> entityA.add(mapEntityA(it))
is EntityBRecord -> entityB.add(mapEntityB(it))
else -> throw AssertionError("Invalid entity type")
}
}
return ResultData(entityA, entityB)
}
我在unionAll
方法中收到编译错误:
Type mismatch.
Required:
Select<out EntityARecord!>!
Found:
SelectConditionStep<EntityBRecord!>
我没有找到有关这种联合场景的任何 Jooq 文档,只是针对我们具有相同记录类型的情况。