springBoot JPA 數據庫字段(實體類)帶下划線在擴展findBy方法時出錯的解決辦法


先貼代碼,一開始沒注意到下划線可能有問題,我是這樣寫的

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一行的下划線去掉,再運行就正常了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM