无法在此 ManagedType [com.company.domain.Statistics] 上找到具有给定名称 [ANumber] 的属性

Unable to locate Attribute with the the given name [ANumber] on this ManagedType [com.company.domain.Statistics]

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

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

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

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

域Class:

@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 可以 return 独特的结果,只是为了准确说明我所做的更改。

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

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

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

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