Quelqu'un sait-il comment obtenir une seule colonne à l'aide de Spring Data JPA? J'ai créé un référentiel comme ci-dessous dans mon projet Spring Boot, mais le message d'erreur {"cause":null,"message":"PersistentEntity must not be null!"}
s'affiche toujours lorsque vous accédez à l'URL restante.
@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UsersRepository extends CrudRepository<Users, Integer> {
@Query("SELECT u.userName FROM Users u")
public List<String> getUserName();
}
Ensuite, si j'accède à l'URL restante comme ../users/search/getUserName
, j'obtiens le message d'erreur suivant: {"cause":null,"message":"PersistentEntity must not be null!"}
Cela fonctionne pour moi.
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());
La ligne ci-dessus m'a donné ce résultat:
données [abhijeet, abhijeet1, abhijeet2, abhijeet3, abhijeet4, abhijeet5]
Le concept est: Dans votre classe d'entité, créez un constructeur avec uniquement les variables instantanées requises. Et utilisez ce constructeur dans la méthode de référentiel indiquée ci-dessous.
Disons que vous avez un référentiel d'interface comme ci-dessous
Mise en œuvre du référentiel:
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);
}
Dans le contrôleur
@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
}
Si vous souhaitez ne renvoyer qu'une seule colonne, vous devez examiner Projections et extraits qui vous permettra de filtrer des colonnes spécifiques et d'autres éléments utiles.