先贴代码,一开始没注意到下划线可能有问题,我是这样写的
user.java
@Entity public class User { @Id @GeneratedValue private Integer user_id; private String user_name; public User() { } public Integer getUser_id() { return user_id; } public void setUser_id(Integer user_id) { this.user_id = user_id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; }
userController.java
@RestController public class UserController { @GetMapping("/users/names/{name}") public List<User> userNameFind(@PathVariable("name") String uName){ return userRepository.findByUser_name(uName); }
}
userRepository.java
public interface UserRepository extends JpaRepository<User, Integer>{ public List<User> findByUser_name(String uname); }
然后就报错了,内容是这样的
UserRepository.findByUser_name(java.lang.String)! No property user found for type User!
很明显,程序只匹配了user_name字段中下划线之前的部分。
为了修复这种问题,需要在user.java文件里做如下一些修改,把
private String user_name;
改成
@Column(name="user_name") private String username;
如果只是添加了@Column(name="user_name")这一句是无效的,还是会报同样的错误,既然知道是下划线出的问题,那在这里把String一行的下划线去掉,再运行就正常了