Имя таблицы SQL автоматически изменяется во время постмэппинга.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Имя таблицы SQL автоматически изменяется во время постмэппинга.

Сообщение Anonymous »

Недавно я начал изучать Spring Boot и столкнулся с некоторой проблемой с PostMapping в моем контроллере отдыха. При выполнении конечной точки постмэппинга таблица SQL автоматически меняется с «employee» на «employee_seq» и ​​выдает ошибку, сообщающую, что таблица не существует.
Это мой класс сущности «Сотрудник», и у меня есть упомянул имя таблицы "сотрудник"

Код: Выделить всё

@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 + '\'' +
'}';
}
}
Это класс реализации DAO интерфейса СотрудникиDAO

Код: Выделить всё

@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);
}
}
Класс реализации службы интерфейса WorkerService

Код: Выделить всё

@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);
}
}
А вот и REST-контроллер

Код: Выделить всё

@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;
}
}
Я создал уровень DAO и уровень сервиса, и все транзакционные операции выполняются на уровне сервиса. В сопоставлении сообщений я выполняю функции «addEmployee» и «updateEmployee», используя функцию «merge()» из ResponseEntity. Пожалуйста, помогите мне решить эту проблему.
Я передал объект JSON в конечную точку POST, и он должен вернуть мне вновь созданную или обновленную запись сотрудника. Вместо этого он выдал ошибку с указанием SQLException. Таблица не существует, поскольку код пытался получить доступ к «employee_seq», но я никогда не упоминал эту таблицу.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ostmapping
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»