【问题标题】:Spring boot Issue IllegalArgumentException when using Order By in Repository在存储库中使用 Order By 时 Spring Boot 问题 IllegalArgumentException
【发布时间】:2020-12-29 13:02:00
【问题描述】:

我遇到了一个烦人的问题,我似乎找不到解决方案。

我目前正在实施一种仅读取按日期排序的前 500 个条目的方法。如果我不输入 Order By,Spring boot 会提供前 500 名,这很好,但是一旦我包含 Order By 选项,我就会收到此错误:

Caused by: java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List com.sma.db.repositories.LogRepository.findTop500ByOrderBylogsLogTimeDesc()! No property orderBylogsLogTimeDesc found for type LogEntity!
    at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:96) ~[spring-data-jpa-2.3.5.RELEASE.jar:2.3.5.RELEASE]

看起来,Spring boot 包含 Order by 并查找名为 orderbylogsLogTimeDesc 的属性。我也不明白的是,为什么顺序是小写的。

有人知道这个的解决方案吗?这真的很烦人,我似乎找不到解决方案:(

存储库: @存储库

public interface LogRepository extends JpaRepository<LogEntity, Long>{
   // List<FeedEntity> deleteByfeedTimestamp(Date feed_timestamp);
   List<LogEntity>findTop500ByOrderBylogsLogTimeDesc();
}

实体:

@Column(name = "logs_logtime")
private Date logsLogTime;

   public Date getLogsLogTime() {
    return logsLogTime;
}

public void setLogsLogTime(Date logsLogTime) {
    this.logsLogTime = logsLogTime;
}

服务:

@Service
public class LogService {
 
    @Autowired
    private LogRepository repo;
     
    public List<LogEntity> getLogs() {
        return repo.findTop500ByOrderBylogsLogTimeDesc();
    } 

我最终找到了解决方案:我不得不写 LogsLogTime 而不是 logsLogTime... 。现在可以使用了:)谢谢!

【问题讨论】:

  • 一个小提示:看看Pageable。然后你可以得到一个分页和排序的结果。 BR
  • 感谢您的提示。我会研究一下:)

标签: spring spring-boot jpa crud


【解决方案1】:

也许你必须指定字段两次,你试过了吗:

List<LogEntity>findTop500ByLogsLogTimeOrderByLogsLogTimeDesc();

【讨论】:

    【解决方案2】:

    你们给了我一个想法。我实际上发现了问题!当我输入 LogsLogTime 时,它​​的工作方式如下:

    findTop500ByOrderByLogsLogTimeDesc

    【讨论】:

      猜你喜欢
      • 2019-07-26
      • 1970-01-01
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      • 1970-01-01
      • 2023-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多