带有SqlResultSetMapping的JPA Sql NativeQuery抛出java.sql.SQLException:列' formula3_0 _'未找到

时间:2018-03-27 21:17:14

标签: java spring hibernate jpa spring-boot

以下是我的@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也有@Forntlas @EntityResult中没有提及。

而query.getResultList()抛出异常。

java.sql.SQLException: Column 'formula3_0_' not found.

任何人都可以定义这里发生的事情吗?我还想补充一点,sql本身执行正常,并且没有语法错误或公式列。

提前致谢。

1 个答案:

答案 0 :(得分:0)

请添加要触发的相应sql语句。根据@EntityResult批注,select语句应检索实体的所有属性部分并应进行映射。选择部分列将创建上述异常。一种替代方法是使用@ConstructorResult,它允许对父级以及所有关联的实体对象进行部分列检索。