Ala*_*lax 12 spring spring-data-jpa spring-data-rest spring-boot
有没有人知道如何使用Spring Data JPA获取单个列?我在Spring Boot项目中创建了一个类似下面的存储库,但{"cause":null,"message":"PersistentEntity must not be null!"}在访问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();
}
Run Code Online (Sandbox Code Playgroud)
然后,如果我像访问Restful URL一样../users/search/getUserName,我收到错误:
{"cause":null,"message":"PersistentEntity must not be null!"}
创建投影接口
public interface UserNameOnly {
String getUserName();
}
Run Code Online (Sandbox Code Playgroud)
然后在您的存储库界面中返回该类型而不是用户类型
public interface UserRepository<User> extends JpaRepository<User,String> {
List<UsernameOnly> findNamesByUserNameNotNull();
}
Run Code Online (Sandbox Code Playgroud)
投影接口中的 get 方法必须匹配 JPA 存储库中定义类型的 get 方法,在本例中为 User。“findBySomePropertyOnTheObjectThatIsNotNull”允许您根据某些条件获取实体列表(而不是 Iterable),对于 findAll 来说,如果唯一标识符(或任何其他 NonNull 字段)不为空,则可以简单地获取实体列表。
概念是:在实体类中创建一个仅包含所需即时变量的构造函数。并在如下所示的存储库方法中使用该构造函数。
假设您有一个如下所示的接口存储库
存储库实施:
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);
}
Run Code Online (Sandbox Code Playgroud)在控制器中
@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
}
Run Code Online (Sandbox Code Playgroud)如果您需要列出所有用户,请尝试select userName from Users,如果您需要一个用户使用,"where"请查看 spring data JPA http://docs.spring.io/spring-data/jpa/docs/current/reference/html/,尝试更改 CrudRepository到 JpaRepository
| 归档时间: |
|
| 查看次数: |
33461 次 |
| 最近记录: |