【问题标题】:Order By Date ASC with Spring Data使用 Spring Data 按日期排序 ASC
【发布时间】:2013-11-13 01:11:14
【问题描述】:

我尝试按 ASC 的顺序在表上使用 Spring-Data-JPA 制作应用程序,但它给了我一个错误:

Invalid derived query! No property asc found for type java.util.Calendar

为什么?

List<Foo> findAllOrderByDateAsc();

@Query("SELECT * FROM foo ORDER BY date ASC")
List<Foo> findAllOrderByDateAsc();

【问题讨论】:

    标签: java sql spring postgresql spring-data


    【解决方案1】:

    尝试在“All”和“Order”之间添加“By”,如下所示:

    List<Foo> findAllByOrderByDateAsc();
    

    【讨论】:

    • 这个答案的诀窍是不需要编写@Query,只需以正确的方式命名方法 Spring-data 将生成查询 ok
    • 对我来说,这会将 IllegalArgumentException 更改为 QueryUtils.toExpressionRecursively() 抛出的 NullPointerException。我没有使用@Query。
    • 多么奇怪的规则。感谢您的提示!
    • 我怎样才能让列名是从前端动态获取的。??
    • 在 Spring 框架为我们提供的所有出色抽象中,事实证明它们还没有语法。
    【解决方案2】:

    我认为你不能使用 findAll 作为前缀。

    关于查询,select * 不是有效的 JPQL。应该是

    select foo from Foo foo order by foo.date desc
    

    【讨论】:

    • 为什么不能解决问题?问题是查询无效,我告诉他正确的查询是什么。
    【解决方案3】:

    date 是 SQL 中的保留字。例如,尝试将表属性更改为foo_date,并将查询重写为SELECT * FROM foo ORDER BY foo_date DESC

    【讨论】:

    【解决方案4】:

    例子:

    databaseDAO.findByUserNameOrderByCreatedDateDesc(username);
    

    根据用户名和排序创建日期列出用户。

    @Repository
    public interface DatabaseDAO extends JpaRepository<User,Integer> {
    
    public List<RecentlyView>  findByUserNameOrderByCreatedDateDesc(String username);
    
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-14
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-10
      • 2018-01-02
      相关资源
      最近更新 更多