Skip to main content
 首页 » 编程设计

spring-data 规范之返回 id 列表而不是对象

2024年05月29日9jpfss

我正在寻找所有订阅用户的所有 ID。这是我的谓词:

public static Specification<User> userSubscribed(){ 
  return new Specification<User>() { 
    public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder builder) { 
      return builder.equal(root.get("status"), 1 /* 1 = subscribed */); 
    } 
  }; 
} 

但是,我的存储库仅允许 count、findAll 和 findOne。有没有办法让它返回某个字段的列表?

请您参考如下方法:

据我所知,Spring-Data 还不支持这一点。阅读response from Oliver Gierke关于相关问题。那里提到的那些问题仍然悬而未决。

作为替代方案,您可以创建 custom repository并使用 TypedQuery 来实现你想要的。 以下是 TypedQuery 的一些示例: http://www.objectdb.com/java/jpa/query/jpql/select

TypedQuery 示例:

TypedQuery<Integer> query = em.createQuery( 
    "SELECT u.id FROM User AS u", Integer.class); 
// ... Some predicates 
List<Integer> results = query.getResultList();