![](/img/trans.png)
[英]Could not extract Result set, org.hibernate.exception.SQLGrammarException
[英]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
。
如果不是這樣,那么檢查是否
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.