【发布时间】:2019-12-10 07:37:51
【问题描述】:
package jerceka.workhard.demo;
@SpringBootApplication
@ComponentScan("jerceka.workhard.demo")
@EntityScan("jerceka.workhard.demo.Account")
@EnableJpaRepositories("jerceka.workhard.demo.Repo")
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
package jerceka.workhard.demo;
@Entity
public class Account {
@Id
@GeneratedValue
private int Id;
private String Name;
private int Age;
public int getId() {
return Id;
}
public void setId(int id) {
Id = id;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public int getAge() {
return Age;
}
public void setAge(int age) {
Age = age;
}
@Override
public String toString() {
return "Account [Name=" + Name + ", Age=" + Age + "]";
}
}
package jerceka.workhard.demo;
@Repository
public interface Repo extends CrudRepository<Account, Long>{
@Query("select * from Account where Name=?1")
List<Account> findByName(String name);
}
package jerceka.workhard.demo;
@Controller
public class Main{
@Autowired
Repo repo;
@RequestMapping
public String Home() {
return "Home.jsp";
}
@RequestMapping("Create")
public String Create(Account a) {
repo.save(a);
return "Home.jsp";
}
@RequestMapping("Bring")
public ModelAndView Bring(@RequestParam int Id) {
ModelAndView MV = new ModelAndView("Show.jsp");
// Account a = repo.findById(Id).orElse(new Account());
// System.out.println(repo.findByName("Mn"));
// MV.addObject(a);
return MV;
}
}
把那个错误告诉我
应用程序启动失败
说明:
jerceka.workhard.demo.Main 中的字段 repo 需要一个无法找到的“jerceka.workhard.demo.Repo”类型的 bean。
注入点有以下注解: - @org.springframework.beans.factory.annotation.Autowired(required=true)
行动:
考虑在您的配置中定义一个“jerceka.workhard.demo.Repo”类型的 bean。
【问题讨论】:
-
删除
@ComponentScan、@EntityScan和@EnableJpaRepositories。@SpringBootApplication会检测到这一点。 -
没用,给我一个奇怪的错误 *
-
请添加错误。
@SpringBootApplication注释就足够了,因为它位于顶层的类中,其他所有内容(实体、存储库等都将被自动检测)。@Query也不需要,因为这是从findByName推断出来的。@Repository在 Spring Data 存储库中不需要。 -
我满足你的所有要求,现在给我这个错误(创建名称为'main'的bean时出错:通过字段'repo'表示不满足的依赖关系;嵌套异常是org.springframework.beans.factory。 BeanCreationException:创建名为“repo”的bean时出错:调用init方法失败;嵌套异常是java.lang.IllegalArgumentException:无法为方法public abstract java.util.List jerceka.workhard.demo.Repo.findByName(java)创建查询.lang.String)!无法在此 ManagedType [jerceka.workhard.demo.Account] 上找到具有给定名称 [name] 的属性)我使用 mysql db btw
-
您的字段名为
Name,其中应为name。因此查询创建失败,您的 repo 无法找到并因此连接。修复您的实体,简而言之,使用正确的 Java 语法。
标签: java spring spring-boot