在这里输入图像描述,这个img是用户表,这里是示例元组,
我想使用sql查询SELECT MAX(KEY_NAME)OF USER;并在这里输入图像描述所以在java,我写了jpa查询,但我遇到了错误16148
2023-02-01 20:58:51.668 ERROR 16148---[nio-8080-exec-7]o.a.c.c.C.[.[.[ /].[的servlet()在上下文with path[]中抛出异常[请求处理失败;嵌套异常是org.springframe.dao.InvalidDataAccessApiUsageException:类型指定的类型为TyedQuery[gdsc.toypj.dutchpayit.domain.User]与查询返回类型[class java.lang.Long]不兼容;嵌套异常是java.lang.IllegalArgumentException:类型指定的TyestQuery[gdsc.toypj.dutchpayit.domain.User]与查询返回类型[class java.lang.Long]不兼容
这里我的来源
UserRepository.java
public User findOneUser() {
return em.createQuery("select MAX(r.id) from User r", User.class)
.getSingleResult();
}
User.java
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "key_name")
private Long id;
private String name;
@OneToMany(mappedBy = "user",cascade = CascadeType.ALL)
private List<Menu> menuList = new ArrayList<>();
@OneToMany(mappedBy = "user",cascade = CascadeType.ALL)
private List<People> peopleList = new ArrayList<>();
public static User addUser(String name){
User user = new User();
user.setName(name);
return user;
}
UserService.java
@Transactional
public User OneUser(){
User user = userRepository.findOneUser();
return user;
}
UserController.java
@GetMapping("/get/one")
public ResponseEntity getOneUser(){
User user = userService.OneUser();
return ResponseEntity.status(HttpStatus.OK).body(new SuccessResponse(200,user));
}
我已经试了3个多小时了…
在UserRepository.java,我尝试了他们和错误的一切。
em. createQuery("select MAX(r.Key_name)from User r",User.class)
em. createQuery("select id from User",User.class)
哦这奏效了
return em.createQuery("select r from User r", User.class)
.getResultList();
为什么只有“select r”有效我不知道!!!!
该错误来自定义为返回User
对象的TyedQuery。
您可以尝试将TyedQuery更改为Long
或创建另一个将User作为对象返回的查询。
你可以用类似这样的东西:
select r from User r where r.id = (select MAX(r.id) from User r)