簡體   English   中英

無法提取結果集:hibernate、oracle 數據庫中的 SQL 語法異常

[英]could not extract result set: hibernate, SQL grammar exception in oracle database

請幫我解決這個問題。 這是我的錯誤的堆棧跟蹤。

servlet [dispatcherServlet] 在路徑 [] 上下文中的 Servlet.service() 拋出異常 [請求處理失敗; 嵌套異常是 org.springframework.dao.InvalidDataAccessResourceUsageException:無法提取 ResultSet; SQL [不適用]; 嵌套異常是 org.hibernate.exception.SQLGrammarException: 無法提取 ResultSet] 的根本原因

oracle.jdbc.OracleDatabaseException: ORA-00942: 表或視圖不存在

這是員工。java class。

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;
    }


}

這是 EmployeeDTO.java

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 +
                '}';
    }


}

這是 EmployeeService.java class。

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;
    }


}

這是 EmployeeController.java class

@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();
        }
    }

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

@Table(name = "demo_employee1")

代表您想要使用的表格,然后 Oracle 抱怨說

ORA-00942: 表或視圖不存在

然后:在 Oracle 中,object 名稱 - 默認情況下 - 以大寫形式存儲,因此 - 嘗試DEMO_EMPLOYEE1而不是demo_employee1


如果不是這樣,那么檢查是否

  • 您使用的表實際上存在於您連接到的 Oracle 架構中
  • 如果其他人擁有它,您是否有權使用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM