使用 Spring Data JPA 选择一列

新手上路,请多包涵

有谁知道如何使用 Spring Data JPA 获取单个列?我在我的 Spring Boot 项目中创建了一个如下所示的存储库,但在访问 Restful URL 时总是得到 {"cause":null,"message":"PersistentEntity must not be null!"} 错误。

 @RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UsersRepository extends CrudRepository<Users, Integer> {

    @Query("SELECT u.userName  FROM Users u")
    public List<String> getUserName();
}

然后,如果我访问像 ../users/search/getUserName 这样的 Restful URL,我会收到错误消息: {"cause":null,"message":"PersistentEntity must not be null!"}

原文由 Alax 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 605
1 个回答

创建投影界面

public interface UserNameOnly {
    String getUserName();
}

然后在您的存储库界面中返回该类型而不是用户类型

public interface UserRepository<User> extends JpaRepository<User,String> {
    List<UsernameOnly> findNamesByUserNameNotNull();
}

投影接口中的 get 方法必须匹配 JPA 存储库中定义类型的 get 方法,在本例中为 User。 “findBySomePropertyOnTheObjectThatIsNotNull”允许您根据某些标准获取实体列表(与 Iterable 相对),如果唯一标识符(或任何其他 NonNull 字段)不为空,则 findAll 可以简单地得到。

原文由 James Gawron 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题