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



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

Servlet〔dispatcherServlet〕的Servlet.service((,位于带路径的上下文中[]引发异常[请求处理失败;嵌套异常为org.springframework.dao.InvalidDataAccessResourceUsageException:无法不提取ResultSet;SQL[n/a];嵌套异常为org.hubinate.exception.SQLGrammaException:无法提取ResultSet]与根本原因

oracle.jdbc.oracle数据库异常:ORA-00942:表或视图没有存在

这是employee.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;
}

}

这是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类。

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类

@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中,对象名称默认以大写形式存储,因此请尝试DEMO_EMPLOYEE1而不是demo_employee1


如果不是这样,则检查

您使用的
  • 表实际存在于您连接到的Oracle架构中
  • 如果其他人拥有它,你有使用权限吗

最新更新