Привет, я пытаюсь добавить данные в базу данных oraclexe с помощью Spring MVC и Hibernate по шаблону Dao Design, но это делает эту ошибку
"Org.springframework.web.util.NestedServletException"
как можно решить эту проблему?
Эта программа только что работала с springMVC без спящего режима, но когда я пытаюсь добавить спящий режим, она не работает и выдает ошибку, я не знаю, как подключить springMVC к спящему режиму
это мой pom.xml
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.5.6-Final</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
</dependencies>
и класс Resource.java
package com.spring.mvc.model;
import javax.persistence.*;
@Entity
@Table(name = "RESOURCSE")
public class Resource {
@Id
@GeneratedValue
@Column(name = "ID",unique = true,length = 10)
private int id;
@Column(name = "NAME", length = 25)
private String name;
@Column(name = "TYPE", length = 30)
private String type;
@Column(name = "unitOfMesure", length = 25)
private String unitOfMesure;
@Column(name = "notes", length = 25)
private String notes;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNotes() {
return notes;
}
public void setNotes(String notes) {
this.notes = notes;
}
public Resource(String name, String type, String unitOfMesure, String notes) {
this.name = name;
this.type = type;
this.unitOfMesure = unitOfMesure;
this.notes = notes;
}
public String getUnitOfMesure() {
return unitOfMesure;
}
public void setUnitOfMesure(String unitOfMesure) {
this.unitOfMesure = unitOfMesure;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Resource() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Resource{" +
"id=" + id +
", name='" + name + '\'' +
", type='" + type + '\'' +
", unitOfMesure='" + unitOfMesure + '\'' +
", notes='" + notes + '\'' +
'}';
}
}
и ResourceDaoImpl
package com.spring.mvc.dao;
import com.spring.mvc.model.Resource;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Repository
@Transactional
public class ResourceDaoImpl implements ResourceDao {
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
@Override
public void addResource(Resource resource) {
try (Session session = this.sessionFactory.getCurrentSession()) {
session.persist(resource);
}
}
@Override
public void updateResource(Resource resource) {
Session session = this.sessionFactory.getCurrentSession();
session.update(resource);
}
@Override
public List<Resource> listResource() {
Session session = this.sessionFactory.getCurrentSession();
List list_resources = session.createQuery("from Resource ").list();
return list_resources;
}
@Override
public Resource getResourceById(int id) {
Session session = this.sessionFactory.getCurrentSession();
Resource resourceId = session.load(Resource.class, id);
return resourceId;
}
@Override
public void removeResource(int id) {
Session session = this.sessionFactory.getCurrentSession();
Resource resourceId = session.load(Resource.class, id);
if (resourceId != null){
session.delete(resourceId);
}
}
}
и ResourceServiceImpl
package com.spring.mvc.service;
import com.spring.mvc.dao.ResourceDao;
import com.spring.mvc.model.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@Transactional
public class ResourceServiceImpl implements ResourceService {
private ResourceDao resourceDao;
public ResourceDao getResourceDao() {
return resourceDao;
}
public void setResourceDao(ResourceDao resourceDao) {
this.resourceDao = resourceDao;
}
@Override
public void addResource(Resource resource) {
this.resourceDao.addResource(resource);
}
@Override
public void updateResource(Resource resource) {
this.resourceDao.updateResource(resource);
}
@Override
public List<Resource> listResource() {
return this.resourceDao.listResource();
}
@Override
public Resource getResourceById(int id) {
return this.resourceDao.getResourceById(id);
}
@Override
public void removeResource(int id) {
this.resourceDao.removeResource(id);
}
}
и ResourceController
package com.spring.mvc.controller;
import com.spring.mvc.model.Resource;
import com.spring.mvc.service.ResourceService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
@Controller
@RequestMapping("/resource")
public class ResourceController {
private ResourceService resourceService;
public void setResourceService(ResourceService resourceService) {
this.resourceService = resourceService;
}
@RequestMapping(value = "/add", method = RequestMethod.GET)
public String add(Model model){
return "resource_add";
}
@ModelAttribute("resource")
public Resource resource(){
return new Resource();
}
@ModelAttribute("typeOptions")
public List<String> getTypes(){
return new LinkedList<>(Arrays.asList(new String[]{
"English","France","Italy"
}));
}
@ModelAttribute("radioOptions")
public List<String> getRadios(){
return new LinkedList<>(Arrays.asList(new String[]{
"Hour","Piece","Tones"
}));
}
@RequestMapping(value = "/save", method = RequestMethod.POST)
public String save(@ModelAttribute Resource resource){
this.resourceService.addResource(resource);
System.out.println(resource);
return "resource_add";
}
}
а это мой hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/xsd/hibernate-configuration">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:XE</property>
<property name="connection.username">username</property>
<property name="connection.password">password</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle12cDialect</property>
<mapping class="com.spring.mvc.model.Resource"></mapping>
</session-factory>
</hibernate-configuration>