4

我正在寻找所有订阅用户的所有 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。有没有办法让它返回某个字段的列表?

4

1 回答 1

4

据我所知,Spring-Data 还不支持这一点。阅读Oliver Gierke对相关问题的回复。那里提到的那些问题仍然存在。

作为替代方案,您可以创建自定义存储库并使用 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();
于 2012-12-20T14:15:42.157 回答