当前位置: 首页 > 知识库问答 >
问题:

Spring Data JPA本机查询结果绑定

雍骏俊
2023-03-14
@Entity
@SqlResultSetMapping(
    name="hourMapping",
    classes=@ConstructorResult(
            targetClass=Representation.class,
            columns={
                    @ColumnResult(name="hour", type=BigDecimal.class),
                    @ColumnResult(name="transactions", type=BigDecimal.class)
            }
            )
    )

@NamedNativeQuery(name="MyEntity.reportByHour", query="SELECT hour,SUM(tran_per_hour) AS transactions FROM MY_ENTITY GROUP BY hour ORDER BY hour"
    ,resultSetMapping="hourMapping")

@Table(name="MY_ENTITY")
public class MyEntity implements Serializable {
@Data //Lombok
@JsonAutoDetect(fieldVisibility = Visibility.ANY)
public class Representation {

public Representation(BigDecimal hour, BigDecimal transactions) {
    this.hour = hour;
    this.transactions = transactions;
}

private BigDecimal hour;
private BigDecimal transactions;

存储库接口:

public interface MyEntityRepository extends JpaRepository<MyEntity, MyEntityPK> {
    List<Representation> reportByHour();
}

当我运行调用本机查询的endpoint时,我得到异常:

无法将值“{0,198}”从类型[java.lang.Object[]]转换为类型[com.representation.representation];嵌套异常为org.springframework.core.convert.converterNotFoundException:未找到能够从类型[java.math.BigDecimal]转换为类型[com.representation.representation]的转换器

感谢任何帮助。

共有1个答案

华良才
2023-03-14

好吧,虚惊一场。我的hibernate依赖项都被弄乱了,导致了冲突,因此导致了上面的异常。

修复这些依赖问题后,工作很好!!

长话短说:让spring-boot-*处理大多数hibernate依赖项,而不是重写或管理您自己的依赖项。

 类似资料:
  • 我需要通过在Hibernate中执行本机查询获得结果集。虽然我使用的是EntityManager,但查询和结果集可能不是实体。 当我尝试下面的代码时,我得到了一个结果。因为我要求的是一个有值的结果。(Hibernate JPA) 结果是:爱丽丝 当我试图从相同的代码中获得多个select out(查询为select name)时,指定来自fresher_test(其中id=1) 这有一种方法,我可

  • 此外,该实体需要一个id,我希望让jpa自动生成它,但我得到的是“Invalid Parameter:Unknown column name id.errorcode=-4460,sqlstate=null” 我的结果集包含4个相同的记录,而不是4个不同的记录,我认为这与我的id字段设置不正确有关 如果你能在这方面提供帮助,我将不胜感激,谢谢。

  • 将变量绑定到本机查询时出错。EclipseLink(JPA2.1) 内部异常:org.PostgreSQL.util.psqlException:错误:“$1”位置或附近的语法错误:12错误代码:0线程“awt-eventqueue-0”javax.Persistence.persistenceException:Exception[EclipseLink-4002](Eclipse Persis

  • 要运行查询,在工具栏中点击 运行 。如果查询语句是正确的,该查询将被运行,如果该查询应该返回数据,结果 选项卡会打开查询返回的数据。如果运行查询时发生错误,运行停止,显示相应的错误信息。 结果 选项卡以网格显示查询返回的结果数据。数据可以用两种模式显示:网格查看 和 表单查看。详细信息请看表查看 器。 提示:Navicat 支持返回 10 个结果集。 注意:你可以通过选择 查看 -> 显示结果 -

  • 你可以在任何的服务器运行查询。在工具栏的下拉式列表中选择目标服务器和数据库。然后点击 “运行”。如果该查询语句是正确的,它将被运行。如果该查询应该返回数据,“结果”选项卡会打开并显示返回的数据。如果运行查询时发生错误,运行会停止并显示相应的错误信息。 “结果”选项卡以网格显示查询返回的结果数据。数据可以用三种模式显示:网格视图、树视图和 JSON 视图。详细信息请参阅数据查看器。 【注意】Navi

  • 你可以在任何的服务器运行查询。在工具栏的下拉式列表中选择目标服务器、数据库和/或模式。然后点击 “运行”。如果该查询语句是正确的,它将被运行。如果该查询应该返回数据,“结果”选项卡会打开并显示返回的数据。如果运行查询时发生错误,运行会停止并显示相应的错误信息。 “结果”选项卡以网格显示查询返回的结果数据。数据可以用两种模式显示:网格视图和表单视图。详细信息请参阅数据查看器。 【注意】Navicat