Java SPRING MVC+;休眠,无法获取所有记录
我正在尝试使用SpringMVC、Hibernate和Tomcat创建WebApp。 我是一个完全的新手,所以请不要生气 所以我创建了数据库,访问了它,可以创建表等等 索引页正常显示,但当我试图列出表中的所有记录时,我遇到错误:Java SPRING MVC+;休眠,无法获取所有记录,java,spring,postgresql,hibernate,spring-mvc,Java,Spring,Postgresql,Hibernate,Spring Mvc,我正在尝试使用SpringMVC、Hibernate和Tomcat创建WebApp。 我是一个完全的新手,所以请不要生气 所以我创建了数据库,访问了它,可以创建表等等 索引页正常显示,但当我试图列出表中的所有记录时,我遇到错误: org.springframework.beans.factory.UnsatifiedDependencyException:创建名为“mainController”的bean时出错:通过字段“contractsRepository”表示的未满足的依赖关系;嵌套异常为
org.springframework.beans.factory.UnsatifiedDependencyException:创建名为“mainController”的bean时出错:通过字段“contractsRepository”表示的未满足的依赖关系;嵌套异常为org.springframework.beans.factory.NoSuchBean定义异常:没有“pl.Bluesoft.repositories.ContractsRepository”类型的合格bean可用:至少需要1个符合autowire候选条件的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)}
下面是我的classess和xmls:
合同实体
package pl.Bluesoft.entities;
import pl.Bluesoft.entities.System;
import javax.persistence.*;
@Entity
public class Contract {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long Id;
private int contractNumber;
private double contractAmount;
private java.util.Date contractStartDate;
private java.util.Date contractEndDate;
@OneToOne
private System system;
private boolean isContractActive;
private String contractAmountPeriod;
public long getId() {
return Id;
}
public void setId(long id) {
Id = id;
}
public int getContractNumber() {
return contractNumber;
}
public void setContractNumber(int contractNumber) {
this.contractNumber = contractNumber;
}
public double getContractAmount() {
return contractAmount;
}
public void setContractAmount(double contractAmount) {
this.contractAmount = contractAmount;
}
public java.util.Date getContractStartDate() {
return contractStartDate;
}
public void setContractStartDate(java.util.Date contractStartDate) {
this.contractStartDate = contractStartDate;
}
public java.util.Date getContractEndDate() {
return contractEndDate;
}
public void setContractEndDate(java.util.Date contractEndDate) {
this.contractEndDate = contractEndDate;
}
public System getSystem() {
return system;
}
public void setSystem(System system) {
this.system = system;
}
public boolean isContractActive() {
return isContractActive;
}
public void setContractActive(boolean contractActive) {
isContractActive = contractActive;
}
public String getContractAmountPeriod() {
return contractAmountPeriod;
}
public void setContractAmountPeriod(String contractAmountPeriod) {
this.contractAmountPeriod = contractAmountPeriod;
}
}
合同存储库:
package pl.Bluesoft.repositories;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import pl.Bluesoft.entities.Contract;
@Repository
public interface ContractsRepository extends CrudRepository <Contract, Long>
{
}
包pl.Bluesoft.repositories;
导入org.springframework.data.repository.crudepository;
导入org.springframework.stereotype.Repository;
导入pl.Bluesoft.entities.Contract;
@存储库
公共接口契约repository扩展了crudepository
{
}
主控制器:
package pl.Bluesoft.controllers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import pl.Bluesoft.entities.Contract;
import pl.Bluesoft.repositories.ContractsRepository;
@Controller
public class MainController {
@Autowired
private ContractsRepository contractsRepository;
@RequestMapping("/")
public String showIndex(){
return "index";
}
@GetMapping("/all")
public @ResponseBody Iterable<Contract> getAllContracts() {
return contractsRepository.findAll();
}
}
包pl.Bluesoft.controllers;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.stereotype.Controller;
导入org.springframework.web.bind.annotation.GetMapping;
导入org.springframework.web.bind.annotation.RequestMapping;
导入org.springframework.web.bind.annotation.ResponseBody;
导入pl.Bluesoft.entities.Contract;
导入pl.Bluesoft.repositories.ContractsRepository;
@控制器
公共类主控制器{
@自动连线
私人合同替代合同替代合同;
@请求映射(“/”)
公共字符串showIndex(){
返回“索引”;
}
@GetMapping(“/all”)
public@ResponseBody Iterable getAllContracts(){
return contracts repository.findAll();
}
}
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>ContractViewer</display-name>
<context-param>
<param-name/>
<param-value/>
</context-param>
<context-param>
<param-name/>
<param-value/>
</context-param>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/appContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
合同查看器
调度员
org.springframework.web.servlet.DispatcherServlet
上下文配置位置
/WEB-INF/appContext.xml
1.
调度员
/
应用程序上下文:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="pl.Bluesoft" />
<mvc:annotation-driven/>
</beans>
<jpa:repositories base-package="pl.Bluesoft.repositories" />
持久性xml:
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="myDatabase" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost/BazaUmow" />
<property name="javax.persistence.jdbc.user" value="postgres" />
<property name="javax.persistence.jdbc.password" value="admin" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL95Dialect"/>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
存储库未实例化。添加到应用程序上下文:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="pl.Bluesoft" />
<mvc:annotation-driven/>
</beans>
<jpa:repositories base-package="pl.Bluesoft.repositories" />
为了扫描包含存储库的类路径的包