摘要: Spring Data 发出警告,因为它SELECT
是同一列两次。警告是:
(...) WARN o.s.d.j.core.convert.ResultSetAccessor : ResultSet contains id multiple times
这是spring-boot-starter-data-jdbc
通过 Spring Boot 2.5.5(文档)。我正在处理一个非常基本的一对多关系:
为了简洁起见,我尽可能地减少了实体类,同时保留了警告:
插座.java
(...)
@Table("outlet")
public class Outlet {
@Id
private String outletId;
@MappedCollection(idColumn = "outlet_id", keyColumn = "id")
private Map<String, OfferedService> offeredServices;
(...)
}
提供服务.java
(...)
@Table("offered_service")
public class OfferedService {
@Id
private String id;
private String outletId;
(...)
}
存储库也是最基本的......
OutletRepository.java
(...)
public interface OutletRepository extends CrudRepository<Outlet, String> {}
...在我的应用程序代码中,我只是findAll
在这个存储库上做一个:
(...)
outletRepo.findAll();
(...)
这会导致查询两次选择同一列,随后来自 Spring Data 的警告ResultSetAccessor
:
DEBUG o.s.jdbc.core.JdbcTemplate : Executing prepared SQL statement [
SELECT "outlet"."outlet_id" AS "outlet_id" FROM "outlet"]
DEBUG o.s.jdbc.core.JdbcTemplate : Executing prepared SQL query
DEBUG o.s.jdbc.core.JdbcTemplate : Executing prepared SQL statement [
SELECT "offered_service"."id" AS "id",
"offered_service"."outlet_id" AS "outlet_id",
"offered_service"."id" AS "id"
FROM "offered_service"
WHERE "offered_service"."outlet_id" = ?]
TRACE o.s.jdbc.core.StatementCreatorUtils : Setting SQL statement parameter value:
column index 1, parameter value [xyz012], value class [java.lang.String], SQL type 12
WARN o.s.d.j.core.convert.ResultSetAccessor : ResultSet contains id multiple times
WARN o.s.d.j.core.convert.ResultSetAccessor : ResultSet contains id multiple times
(...repeated many times...)
我在这里做错了什么?另外,对于findAll
,这不应该是 aJOIN
吗?