问题
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!"}
回答1:
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 }
回答2:
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]
回答3:
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.
回答4:
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