web-dev-qa-db-ja.com

Spring Data JPAを使用して1つの列を選択します

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!"}

12
Alax

これは私のために働く。

public interface UserDataRepository extends JpaRepository<UserData, Long> {

    @Query(value = "SELECT emp_name FROM user_data", nativeQuery = true)
    public List<Object[]> findEmp_name();
}


System.out.println("data"+  userDataRepository.findEmp_name());

上記の行は私にこの結果を与えました:

data [abhijeet、abhijeet1、abhijeet2、abhijeet3、abhijeet4、abhijeet5]

2
Abhijeet Behare

概念は次のとおりです。エンティティクラスで、必要なインスタント変数のみを持つコンストラクタを作成します。そして、以下に示すリポジトリメソッドでそのコンストラクタを使用します。

以下のようなインターフェイスのリポジトリがあるとしましょう

  1. リポジトリの実装:

    public interface UserRepository<User> extends JpaRepository<User,String>
    {
        @Query(value = "select new com.org.User(usr.userId) from User usr where usr.name(:name))")
        List<User> findUserIdAlone(@Param("name") String user);
    }
    
  2. コントローラー内

    @RestController
    public class UserController 
    {
        @Autowired
        private UserRepository<User> userRepository; 
    
        @Res
        public ResponseEntity<User> getUser(@PathVariable("usrname") String userName)
        {
            User resultUser = usrRepository.findUserIdAlone(userName);
            return ResponseEntity.ok(resultUser);
        }
    }
    
    public class User 
    {
    
        private String userId,userName;
    
        public User(String userId) 
        {
            this.userId=userId;
        }
        // setter and getters goes here
    }
    
1
Ethiraj

単一の列のみを返す場合は、 Projections and Excerpts を確認する必要があります。これにより、特定の列やその他の有用なものをフィルタリングできます。

0
Hatem Jaber