我正在考虑这个springboot
教程并在我的项目中使用spring data
,我试图添加data to database
。使用以下.
bt当我试图这样做时,我得到一个错误说
调用方法public abstract java.lang.Object org.springframework.data.repository.CrudRepository.save(java.lang.Object中) 不是访问方法!
这是我的代码,
//my controller
@RequestMapping("/mode")
public String showProducts(ModeRepository repository){
Mode m = new Mode();
m.setSeats(2);
repository.save(m); //this is where the error getting from
return "product";
}
//implementing crud with mode repository
@Repository
public interface ModeRepository extends CrudRepository<Mode, Long> {
}
//my mode class
@Entity
@Table(name="mode")
public class Mode implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(unique=true, nullable=false)
private int idMode;
@Column(nullable=false)
private int seats;
//assume that there are getters and setters
}
我是springboot
的新手,有人能说出我做错了什么,
感谢有人能为我提供一个了解springdata
的链接
除了spring documentation
答案 0 :(得分:12)
更改您的控制器代码,以便ModeRepository是一个私有的自动连接字段。
@Autowired //don't forget the setter
private ModeRepository repository;
@RequestMapping("/mode")
public String showProducts(){
Mode m = new Mode();
m.setSeats(2);
repository.save(m); //this is where the error getting from
return "product";
}
答案 1 :(得分:1)
我今天偶然发现了这个错误。 IntelliJ IDEA告诉我,不建议使用直接场注入,这在某种程度上是有意义的。您还可以在@Controller上使用构造函数注入。可能看起来像是头顶上的东西,但我认为它更干净。
@Controller
public class WhateverController {
private ModeRepository repository;
public WhateverController(ModeRepository repository) {
this.repository = repository;
}
@RequestMapping("/mode")
public String showProducts(){
Mode m = new Mode();
m.setSeats(2);
repository.save(m); //this is where the error getting from
return "product";
}
}