Java 保存(对象)”,因为“this.userRepo”为空
当我发布数据时,我得到了这个错误 无法调用com.helpmydesk.Repo.UserRepo.saveObject,因为this.UserRepo为null 在com.helpmydesk.InterFaceAndService.ServiceClass.executeServiceClass.java:17~[classes/:na] 在com.helpmydesk.ControllerClass.executeControllerClass.java:27~[classes/:na] 位于java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0Native Method~[na:na] 位于java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invokeNativeMethodAccessorImpl.java:64~[na:na] 在java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invokeDelegatingMethodAccessorImpl.java:43~[na:na] 主类 控制器类 存储库类 服务等级 用户类Java 保存(对象)”,因为“this.userRepo”为空,java,spring-boot,spring-data-jpa,Java,Spring Boot,Spring Data Jpa,当我发布数据时,我得到了这个错误 无法调用com.helpmydesk.Repo.UserRepo.saveObject,因为this.UserRepo为null 在com.helpmydesk.InterFaceAndService.ServiceClass.executeServiceClass.java:17~[classes/:na] 在com.helpmydesk.ControllerClass.executeControllerClass.java:27~[classes/:na]
UserRepo变量上没有@Autowired。您可以添加它;更好的修复方法是消除字段注入并使用普通构造函数。Spring在调用构造函数时将提供所有必要的依赖项,它使测试更容易,并且可以防止此类问题。显然UserRepo为null。您永远不会使用它你的意思是自动连接吗?根据你的代码,你缺少一个私有UserRepo UserRepo的注入;用@Autowired注释该字段;或者使用一个接受UserRepo实例的构造函数,该实例将在bean创建时被注入。无论哪种方式注入实例。否则它将为null。当我使用@Auto时在私有UserRepo userRepo上;在COM.HelpMyDeStudio.IdFruteServices中获取错误字段USERPO需要一个类型为“COM.PrimyStudio.ReP. UserRepo”的bean。serRepo这在我看来似乎有点不对劲。它应该不是@EnableJpaRepositoriesbasePackages=com.helpmydesk.Repo,还是仅仅是@enableJParepositories,如果你能解释我如何解决这个问题。@user15038721我给你写了一个具体的解释。private UserRepo UserRepo;public serviceClasseuserrepo UserRepo UserRepo{this.UserRepo=UserRepo;}我已经试过了,但仍然遇到同样的错误。请帮助我。请帮助我解决这个问题
@EnableJpaRepositories("package com.helpmydesk.Repo.UserRepo")
@SpringBootApplication
public class HelpmydeskApplication {
public static void main(String[] args) {
SpringApplication.run(HelpmydeskApplication.class, args);
}
}
@Controller
public class ControllerClass {
@Autowired
private InterfaceClass interfaceClass;
public ControllerClass(InterfaceClass interfaceClass) {
this.interfaceClass = interfaceClass;
}
@PostMapping("/doregister")
public User execute(@RequestBody User user) {
return this.interfaceClass.execute(user);
}
@RequestMapping("/")
public String home() {
return "home";
}
@RequestMapping("/singup")
public String singup() {
return "singup";
}
}
@Repository
public interface UserRepo extends CrudRepository<User, Integer> {
}
public interface InterfaceClass {
public User execute(User user);
}
@Service
public class ServiceClass implements InterfaceClass {
private UserRepo userRepo;
public User execute(User user) {
this.userRepo.save(user);
return user;
}
}
@org.hibernate.annotations.Entity
@Table(name = "USER")
public class User {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private int id;
private String name;
@Column(unique = true)
private String email;
private String password;
private String role;
private boolean enabled;
private String imageUrl;
@Column(length = 500)
private String about;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "user")
private java.util.List<Blog> blogs = new ArrayList<>();
public User() {
super();
// TODO Auto-generated constructor stub
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public String getAbout() {
return about;
}
public void setAbout(String about) {
this.about = about;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", email=" + email + ", password=" + password + ", role=" + role
+ ", enabled=" + enabled + ", imageUrl=" + imageUrl + ", about=" + about + "]";
}
}