当前位置: 首页 > 知识库问答 >
问题:

如何使用Spring Data JPA以分页的方式检索特定列?

商茂勋
2023-03-14
@Entity
@Table(name = "user")
public class User implements Serializable{

    @Id
    @Column(name = "id", unique = true)
    private String userId;

    @Column(name = "user_name")
    private String userName;

    @Column(name = "emp_code")
    private String empCode;
    // ... other properties
}  
@Repository
public interface UserRepository extends PagingAndSortingRepository<User, String>
{
    // .... working 
    @Query("select u.userName from User u")
    Page<User> findAllUserName(Pageable pageable);


    //... not working
    @Query("select u.userName, u.empCode from User u")
    Page<User> findAllUserNameAndEmpCode(Pageable pageable);
}
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: expecting CLOSE, found ',' near line 1, column 29 [select count(u.userName,u.empCode) from com.entity.User u]
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)
at org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException(ErrorCounter.java:79)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:278)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:182)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:138)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:105)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:221)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:199)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1778)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:291)
... 63 more  

共有1个答案

柳项明
2023-03-14

您应该指定计数查询。您的select函数的页面返回值需要知道将有多少结果。因此它会发送一个COUNT查询,该查询可能是从您的select查询中生成的,如下所示:

select count(u.userName,u.empCode) from com.entity.User u

这是错误的,因为COUNT函数只需要一个参数。因此您应该创建自定义计数查询(可能如下所示):

select count(u.userName) from com.entity.User u

并将其放入@query注释中:

@Query(
    value = "select u.userName, u.empCode from User u",
    countQuery = "select count(u.userName) from com.entity.User u"
)
Page<User> findAllUserNameAndEmpCode(Pageable pageable);
 类似资料:
  • 我试图弄清楚如何使用Streams API实现一个zip函数,该函数以无限多的int[]作为参数;从每个元素中获取i'th元素;将它们放在一个元组中(显然需要一个自定义的元组对象-我有),并返回一个元组列表(即list)。 本质上,为: 建议的方法应该以java的形式返回:。util。列表 这是一个函数,它以“正常”的方式完成了我试图做的事情:

  • 我将一些数据存储为neo4j节点。此节点具有一些关联的C#类未描述的属性,因此在neo4jclient查询返回时不会自动映射回该类。 例如,这个C类: 存储在neo4j中,然后使用以下neo4jclient fluent代码检索: 将用名称和编号填充Node对象,但保留对CustomClass对象的空引用。 为了解决这个问题,我将CustomClass序列化为JSON字符串,并将其作为字符串属性存

  • 当我试图检索recycleview中保存的数据时,它们显示的是所有用户的数据,而不是登录的用户。有人能帮忙吗?

  • 问题内容: 我想使用python下载和解析网页,但是要访问它,我需要设置一些cookie。因此,我需要先通过https登录到网页。登录时刻涉及将两个POST参数(用户名,密码)发送到/login.php。在登录请求期间,我想从响应头中检索cookie并将其存储,以便可以在请求中使用它们来下载/data.php网页。 我将如何在python(最好是2.6)中做到这一点?如果可能,我只想使用内置模块。

  • 问题内容: 如何使用Python检索网页的页面标题(标题html标签)? 问题答案: 我将始终将lxml用于此类任务。您也可以使用beautifulsoup。 根据评论进行编辑:

  • 到目前为止,我只能与Jira建立连接,但我不知道如何获取特定字段。据我所知,JIRA API的SearchResult类可以解决这个问题,但我不知道如何将它集成到我现有的代码中。任何帮助都将不胜感激。 Java版本-8,操作系统-视窗10,日蚀-火星 /*使用的罐子:jersey-bundle-1.9。罐子(https://mvnrepository.com/artifact/com.sun.je