【发布时间】:2021-11-11 12:00:47
【问题描述】:
在使用 Spring Boot R2DBC 时,我面临这样一种情况,即使用 @Query 编写包含 INNER JOIN 的原始查询时,结果 Flux 返回的所有行中的一些字段有数据,但其他字段为空。然而,当直接从数据库运行相同的查询时,所有字段都被填写,这是我所期望的。可能是什么问题呢?列名和 POJO/Bean 名称完全匹配,并且是 camelCase 的混合体,在 DB 级别和代码中都是大写和小写。例如。在下面的 SQL 中:
@Query("SELECT" +
" i.inboundID, " +
" i.MSISDN," +
" i.message," +
" ms.shortDesc," +
//... other columns
" i.modifiedByUsername" +
" FROM inbound i " +
" JOIN messageStatuses ms on ms.statusCode = i.inboundStatus " +
" JOIN conversation cm on i.conversationID = cm.conversationID " +
//...some other SQL
" LIMIT :limit OFFSET :offset ")
Flux<MessageModel> findAllMessages(...)
并给出下面的 POJO:
//getter and setter methods omitted
public class MessageModel
{
private Integer inboundID;
private String MSISDN;
private String message;
private String shortDesc;
...
private String modifiedByUsername;
}
...MSISDN 和 message 字段是通过 R2DBC 获取时唯一包含数据的列,所有其他列都将为空。但是当上面的 SQL 被提取并直接在数据库(MySQL)上执行时,所有的列都将包含数据。知道为什么会这样吗?
【问题讨论】:
标签: mysql spring-data-r2dbc r2dbc r2dbc-mysql