Это мой класс сущности «Сотрудник», и у меня есть упомянул имя таблицы "сотрудник"
Код: Выделить всё
@Entity
@Table(name = "employee")
public class Employee {
// define fields
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private int id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "email")
private String email;
// define constructors
public Employee() {
}
public Employee(String firstName, String lastName, String email) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
// define getters / setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
// define a toString() to display an employee
@Override
public String toString() {
return "Employee{" +
"id=" + id +
", firstName='" + firstName + '\'' +
", lastName='" + lastName + '\'' +
", email='" + email + '\'' +
'}';
}
}
Код: Выделить всё
@Repository
public class EmployeeDAOJpaImpl implements EmployeeDao{
//define fields for entity manager
private EntityManager entityManager;
// setup constructor injection
@Autowired
public EmployeeDAOJpaImpl(EntityManager entityManager) {
this.entityManager = entityManager;
}
@Override
public List findAll() {
// create a query
TypedQuery query = entityManager.createQuery("from Employee", Employee.class);
// execute the query and get the result list
List employees = query.getResultList();
// return the result
return employees;
}
@Override
public Employee findById(int id) {
return entityManager.find(Employee.class, id);
}
@Override
public Employee save(Employee emp) {
Employee dbEmp = entityManager.merge(emp);
return dbEmp;
}
@Override
public void deleteById(int id) {
Employee emp = entityManager.find(Employee.class, id);
entityManager.remove(emp);
}
}
Код: Выделить всё
@Service
public class EmployeeServiceImpl implements EmployeeService{
private EmployeeDao employeeDao;
@Autowired
public EmployeeServiceImpl(EmployeeDao employeeDao) {
this.employeeDao = employeeDao;
}
@Override
public List findAll() {
return employeeDao.findAll();
}
@Override
@Transactional
public Employee findById(int id) {
return employeeDao.findById(id);
}
@Transactional
@Override
public Employee save(Employee emp) {
return employeeDao.save(emp);
}
@Transactional
@Override
public void deleteById(int id) {
employeeDao.deleteById(id);
}
}
Код: Выделить всё
@RestController
@RequestMapping("/api")
public class EmployeeRestController {
/*
The rest controller is only concerned with the EmployeeService and nothing else.
*/
// using the service view to get the final view
private EmployeeService employeeService;
@Autowired
public EmployeeRestController (EmployeeService employeeService) {
this.employeeService = employeeService;
}
// expose the "/employees" and return the list of employees
@GetMapping("/employees")
public List findAll() {
return employeeService.findAll();
}
@GetMapping("/employees/{empId}")
public Employee findById(@PathVariable int empId) {
Employee emp = employeeService.findById(empId);
if(emp == null) throw new RuntimeException("Employee id not found" + empId);
return emp;
}
@PostMapping("/employees")
public Employee addEmployee(@RequestBody Employee emp) {
emp.setId(0);
Employee dbEmp = employeeService.save(emp);
return dbEmp;
}
}
Я передал объект JSON в конечную точку POST, и он должен вернуть мне вновь созданную или обновленную запись сотрудника. Вместо этого он выдал ошибку с указанием SQLException. Таблица не существует, поскольку код пытался получить доступ к «employee_seq», но я никогда не упоминал эту таблицу.
Подробнее здесь: https://stackoverflow.com/questions/791 ... ostmapping
Мобильная версия