有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法提取结果集:hibernate,oracle数据库中的SQL语法异常

请帮我解决这个问题。这是我的错误的堆栈跟踪

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet] with root cause

oracle.jdbc.OracleDatabaseException: ORA-00942: table or view does not exist

这是员工。java类

package com.example.demo.model;


import javax.persistence.*;
import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;


@Entity
@Table(name = "demo_employee1")

public class Employee implements Serializable {


    private static final long serialVersionUID = 2L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "s_employeeCreate")
    @SequenceGenerator(name = "s_employeeCreate", sequenceName = "s_employeeCreate", allocationSize = 1)
    @Column(name = "id", unique = true, nullable = false)
    private Long id;


    @Column(name = "first_name")
    private String firstName;

    @Column(name = "last_name")
    private String lastName;

    @Column(name = "email_address")
    private String email;

    @Column(name = "employee_DepartmentId")
    private String employeeDepartmentId;


    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;

    }

    public String getEmployeeDepartmentId() {
        return employeeDepartmentId;
    }

    public void setEmployeeDepartmentId(String employeeDepartmentId) {
        this.employeeDepartmentId = employeeDepartmentId;
    }


}

这是你的雇主。爪哇

package com.example.demo.DTO;

import com.fasterxml.jackson.annotation.JsonProperty;

import com.example.demo.model.Employee;

import org.springframework.beans.BeanUtils;

public class EmployeeDTO {

    @JsonProperty(value="id")
    private long id;

    @JsonProperty(value="firstName")
    private String firstName;

    @JsonProperty(value="lastName")
    private String lastName;


    @JsonProperty(value="email")
    private  String email;


    @JsonProperty(value="employeeDepartmentId")
    private String employeeDepartmentId;



    public String getFirstName()
    {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName()
    {
        return lastName;
    }

    public void setLastName(String lastName)
    {
        this.lastName = lastName;
    }
    public  String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getEmployeeDepartmentId(){
        return employeeDepartmentId;
    }

    public void setEmployeeDepartmentId(String employeeDepartmentId){
        this.employeeDepartmentId= employeeDepartmentId;
    }


    public static Employee valueOf(EmployeeDTO employee) {
        if (employee != null) {
            Employee employee1 = new Employee();


            employee1.setFirstName(employee.getFirstName());
            employee1.setLastName(employee.getLastName());
            employee1.setEmail(employee.getEmail());
            employee1.setEmployeeDepartmentId(employee.getEmployeeDepartmentId());




            return employee1;
        }
        return null;
    }


 public static EmployeeDTO valueOf(Employee employee) {
        EmployeeDTO employeeDTO = new EmployeeDTO();
        BeanUtils.copyProperties(employee, employeeDTO);
        return employeeDTO;
    }

    public static Employee valueOf1(EmployeeDTO employeeDTO) {
        Employee employee = new Employee();
        BeanUtils.copyProperties(employeeDTO, employee);
        return employee;
    }
    @Override
    public String toString() {
        return "EmployeeDTO{" +

                " firstName='" + firstName + '\'' +
                ", lastName='" + lastName + '\'' +
                ",email='"+ email+'\''+
                ", EmployeeDepartmentId=" + employeeDepartmentId +
                '}';
    }


}

这是员工服务。java类

package com.example.demo.Service;

import com.example.demo.model.Employee;
import com.example.demo.DTO.EmployeeDTO;
import com.example.demo.Repositry.EmployeeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;

import org.springframework.stereotype.Service;

import java.util.List;
import java.util.ArrayList;
import org.springframework.util.CollectionUtils;


import java.util.Optional;


@Service
public class EmployeeService {

    @Autowired EmployeeRepository employeeRepository;

    @Autowired EmployeeService employeeService;

    Logger LOG = LoggerFactory.getLogger(EmployeeService.class);

    public Employee createEmployee(EmployeeDTO employeeDTO) {
        LOG.info(employeeDTO.toString());
        Employee employee = EmployeeDTO.valueOf1(employeeDTO);
        LOG.info(employee.toString());
        return employeeRepository.saveAndFlush(employee);
    }

    public EmployeeDTO getUserById(Long id) {
        Employee employee = employeeRepository.findById(id).orElse(null);
        if (employee != null) {
            return EmployeeDTO.valueOf(employee);
        }
        return null;
    }

    public List<EmployeeDTO> getAllUsers() {
        List<Employee> employees = employeeRepository.findAll();
        List<EmployeeDTO> employeeDTOList = new ArrayList<>();
        if (!CollectionUtils.isEmpty(employees)) {
            for (Employee employee: employees) {
                employeeDTOList.add(EmployeeDTO.valueOf(employee));
            }
        }
        return employeeDTOList;
    }


}

这是员工控制员。java类

@Controller
public class EmployeeController {
    Logger LOG = LoggerFactory.getLogger(EmployeeController.class);


 @Autowired
    private EmployeeService employeeService;

    @RequestMapping(value = "/test", method = RequestMethod.GET)
    @ResponseBody
    public String testApi() {
        return "Hello World";
    }

    @RequestMapping(value = "/employee/create", method = RequestMethod.POST)
    @ResponseBody
    public String createEmployee(@RequestBody EmployeeDTO employeeDTO) {
        LOG.info("create Employee");
        Employee employee = employeeService.createEmployee(employeeDTO);
        if (employee != null) {
            return "Successfully created user with " + employee.getFirstName() + " " + employee.getLastName();
        }
        return "Failed to create user";
    }

    @RequestMapping(value = "/user/read", method = RequestMethod.GET)
    @ResponseBody
    public EmployeeDTO getUser(@RequestParam Long id) {
        LOG.info("get user");
        return employeeService.getUserById(id);
    }

  

      @RequestMapping(value = "/user/all", method = RequestMethod.GET)
        @ResponseBody
        public List<EmployeeDTO> getAllUsers() {
            LOG.info("get all users");
            return employeeService.getAllUsers();
        }
    }

共 (1) 个答案

  1. # 1 楼答案

    我不知道您使用的工具,但是-如果:

    @Table(name = "demo_employee1")
    

    表示您希望使用的表,然后Oracle抱怨

    ORA-00942: table or view does not exist

    然后:在Oracle中,默认情况下,对象名以大写形式存储,因此,请尝试DEMO_EMPLOYEE1而不是demo_employee1


    如果不是这样,那么检查

    • 您使用的表实际上存在于您连接到的Oracle架构中
    • 如果它是别人的,你有使用它的特权吗