小编Ttt*_*ing的帖子

如何弹簧 Jpa.unsafe 对 postgresql 中的 json 字段进行排序

在 spring jpa doc 中,该示例显示了一种通过 Length(field) 等 sql 函数进行排序的方法。

public interface UserRepository extends JpaRepository<User, Long> {

  @Query("select u from User u where u.lastname like ?1%")
  List<User> findByAndSort(String lastname, Sort sort);

  @Query("select u.id, LENGTH(u.firstname) as fn_len from User u where u.lastname like ?1%")
  List<Object[]> findByAsArrayAndSort(String lastname, Sort sort);
}

repo.findByAndSort("targaryen", JpaSort.unsafe("LENGTH(firstname)")); 
Run Code Online (Sandbox Code Playgroud)

所以我尝试在postgres中对json字段进行排序,代码就像

@Query("select u from User u where u.loginName like ?1%")
List<User> findByAndSort(String loginName, Sort sort);

repo.findAllAndSort("jack", JpaSort.unsafe("extra ->> 'info'"));
Run Code Online (Sandbox Code Playgroud)

extra 是 postgres 中字段的名称,它是一个 jsonb 类型。

不幸的是,它返回错误:

org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: > …
Run Code Online (Sandbox Code Playgroud)

java postgresql spring jpa

5
推荐指数
1
解决办法
795
查看次数

标签 统计

java ×1

jpa ×1

postgresql ×1

spring ×1