无法在此 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,这是我能做的最简单的解决方案。
我刚刚将我的项目升级到 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,这是我能做的最简单的解决方案。