0

我刚刚将我的项目升级到 spring5,这导致代码出现以下错误,该代码在早期的 spring 版本中运行良好。

问题是 JPA 应该将 aNumber 映射到 ANumber 但它没有这样做,它将 ANumber 作为 ANumber 而不是导致此问题的 aNumber。

我看到 spring 团队的一个线程,但在这里看不到解决方案:https ://github.com/spring-projects/spring-data-jpa/issues/1247

我试图到处搜索,但没有找到任何有用的东西。

域类:

@Data
@Entity
public class Statistics {

    @Id
    private Long id;

    private String aNumber;
    private Integer dispositionCode;

    @CreatedDate
    private OffsetDateTime created;

}

Repository 接口中的方法:

Optional<Statistics> findFirstByIdAndANumberAndDispositionCodeInOrderByCreatedDesc(Long id, String aNumber, Integer... dispositionCode);

注意:我知道 id 可以返回唯一结果,只是为了做出我所做的更改的确切示例。

4

1 回答 1

0

在 JPA 版本升级后我遇到了这个问题,它指出所有名称都是正确的并且映射完美。

我找到的解决方案是在 spring 数据 JPA 的@Query注释中定义本机查询,因为当 JPA 尝试创建 JPA 命名查询时出现问题。

@Query(nativeQuery = true, value = "Your Query here")
Optional<Statistics> findFirstByIdAndANumberAndDispositionCodeInOrderByCreatedDesc(Long id, String aNumber, Integer... dispositionCode);

这可能不是最好的解决方案,但在我的情况下,我不应该更改版本,因为它来自父 POM,这是我能做的最简单的解决方案。

于 2021-12-05T21:12:48.980 回答