Does anyone have any idea how to get a single column using Spring Data JPA? I created a repository like below in my Spring Boot project, but always get the {"cause":null,"message":"PersistentEntity must not be null!"}
error when accessing the Restful URL.
@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UsersRepository extends CrudRepository<Users, Integer> {
@Query("SELECT u.userName FROM Users u")
public List<String> getUserName();
}
Then if I access the Restful URL like ../users/search/getUserName
, I get the error:
{"cause":null,"message":"PersistentEntity must not be null!"}
This Works for me.
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());
The above line gave me this result :
data[abhijeet, abhijeet1, abhijeet2, abhijeet3, abhijeet4, abhijeet5]
Concept is : In your entity class create a constructor with only required instant variables. And use that constructor in the repository method shown below.
Lets say you have a interface Repository like below
Repository implementation:
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); }
In Controller
@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 }
If you want to only return a single column you should look at Projections and Excerpts which will allow you to filter specific columns and other things that are usefule.
If you need list all of the users, try select userName from Users
, if you need one user use "where"
look at spring data JPA http://docs.spring.io/spring-data/jpa/docs/current/reference/html/ , try change CrudRepository to JpaRepository
来源:https://stackoverflow.com/questions/28912422/select-one-column-using-spring-data-jpa