先貼代碼,一開始沒注意到下划線可能有問題,我是這樣寫的
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一行的下划線去掉,再運行就正常了