【发布时间】:2018-07-23 01:05:36
【问题描述】:
我不太确定如何解释这个问题,但基本上我正在尝试做这样的事情:
private SelectHavingStep<Record> singleUserQuery(Collection<Condition> conditions) {
return dsl.select(USER_T.fields())
.select(DSL.arrayAggDistinct(PERMISSION_T.NAME).as("permissions"))
.select(ROLE.NAME.as("role"))
.select(ROLE.ROLE_TYPE.as("roleType"))
.from(USER_T)
.leftJoin(USER_ACCOUNT_PERMISSIONS)
.on(USER_ACCOUNT_PERMISSIONS.USER_ID.eq(USER_T.ID))
.leftJoin(PERMISSION_T)
.on(PERMISSION_T.NAME.eq(USER_ACCOUNT_PERMISSIONS.PERMISSION))
.leftJoin(ROLE)
.on(ROLE.ID.eq(USER_T.ROLE_ID))
.where(conditions)
.groupBy(USER_T.ID);
}
我有一个 USER 表通过角色 ID 引用 ROLE 表,并且希望我的用户结果始终包含来自 ROLE 表的角色名称和类型。
这给了我以下错误PSQLException: ERROR: column "role.name" must appear in the GROUP BY clause or be used in an aggregate function。问题是我不确定如何解决这个问题,并希望听到任何建议。我真的很感激任何帮助。
【问题讨论】:
标签: java postgresql spring-boot jooq