JPA Sql NativeQuery with SqlResultSetMapping throwing java.sql.SQLException: Column 'formula3_0_' no
Posted
技术标签:
【中文标题】JPA Sql NativeQuery with SqlResultSetMapping throwing java.sql.SQLException: Column \'formula3_0_\' not found【英文标题】:JPA Sql NativeQuery with SqlResultSetMapping throwing java.sql.SQLException: Column 'formula3_0_' not foundJPA Sql NativeQuery with SqlResultSetMapping throwing java.sql.SQLException: Column 'formula3_0_' not found 【发布时间】:2018-03-27 21:17:13 【问题描述】:以下是我的@SqlResultSetMapping 的快照,其中包括来自本机查询的两个实体和另外两个列。
@SqlResultSetMapping(
name = "EventLogMarketingInfoMapping",
entities =
@EntityResult(
entityClass = MarketingInfo.class,
fields =
@FieldResult(name = "id", column = "id"),
@FieldResult(name = "remoteAddr", column = "remote_addr"),
@FieldResult(name = "user_email", column = "user_email"),
),
@EntityResult(
entityClass = EventLog.class,
fields =
@FieldResult(name = "log_id", column = "log_id"),
@FieldResult(name = "comment", column = "comment"),
@FieldResult(name = "client", column = "client_id"),
@FieldResult(name = "game", column = "game_id")
)
,
columns =
@ColumnResult(
name = "user_namex",
type = String.class
),
@ColumnResult(
name = "ip",
type = String.class
),
)
SqlResultSetMapping 上面是用下面的原生查询调用的
Query query = entityManager.createNativeQuery(sql, "EventLogMarketingInfoMapping");
return query.getResultList();
MarketingInfo @Entity 也有一些 @Forumlas,在 @EntityResult 中没有提到。
而 query.getResultList() 正在抛出以下异常。
java.sql.SQLException: Column 'formula3_0_' not found.
谁能定义这里发生了什么?我还想补充一点,sql 本身执行得很好,里面没有语法错误或公式列。
提前致谢。
【问题讨论】:
你有想过这个吗? 我遇到了同样的错误。 【参考方案1】:请添加相应的被触发的 sql 语句,根据 @EntityResult 注释,选择语句应该检索实体的所有属性部分并应该被映射。部分列选择将创建上述异常。一种替代方法是使用@ConstructorResult,它允许对所有关联实体对象的父级进行部分列检索。
【讨论】:
以上是关于JPA Sql NativeQuery with SqlResultSetMapping throwing java.sql.SQLException: Column 'formula3_0_' no的主要内容,如果未能解决你的问题,请参考以下文章
jpa:repository中@Query有nativeQuery = true和没有的区别
Spring Data JPA nativeQuery 字符串搜索出错
spring-data-jpa 使用 @Query 和 @Modifying 插入而不使用 nativeQuery 或 save() 或 saveAndFlush()