报错:Disconnected from the target VM
Disconnected from the target VM, address: '127.0.0.1:63165', transport: 'socket'。
注:网上很多文章各种解决方案,千万别跟着尝试。遇到这个报错的话,原因很可能是因为后台代码写错了,先检查后台代码。
第一次原因:
userManagementServiceImpl中无法注入底层写好的baseRepository:
解决方案一:
在UserManagementServiceImpl业务层实现类中:
需要重写BaseRepository
@Override
@Autowired
public void setBaseRepository(BaseRepository<User, Long> baseRepository) {
super.setBaseRepository(baseRepository);
}
解决方案二:
修改IDEA软件设置的,将安全等级修改为wanrning,报错也会消失,具体原因需要再了解。
第二次原因: jpql语句语法有误
在dao接口中:
/** 用于检查账号是否已存在,根据账号名查数据 */ @Query("select u from User u where u.account = :account ") User findByAccount(@Param("account") String account);
jpql简介
JPQL是JPA的规范里面的东西。
DML就是insert update delete这些操作语句。
JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看成是Hibernate HQL的等价物。
JPA定义了独特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。
注:在JPA中没有Delete这个注解,尝试使用Modifing可以这样:
Modifing的用法:
(要用原生SQL的话,就用NameNativeQuery) @Transactional @Modifying @Query("delete from User u where u.id = :id ") void deleteUser(@Param("id") Long id);