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