Spring MVC Hibernate PostgreSql error connection
не могу решить одну проблему
1 у меня был проект MVC(JdbcTemplate) + view Thymeleaf работал нормально без ошибок
2 переделал, добавил все нужные зависимости и сменил JdbcTemplate на Hibernate + PostgeSql
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping("/employees")
public class EmployeesController {
private final EmployeeDAO employeeDAO;
@Autowired
public EmployeesController(EmployeeDAO employeeDAO) {
this.employeeDAO = employeeDAO;
}
@GetMapping("/all-employees")
public String getAllEmployees(Model model){
model.addAttribute("allEmpList", employeeDAO.getAllEmployees());
return "employees/all-employees";
}
@GetMapping("/{id}")
public String getEmployeeById(@PathVariable("id") int id, Model model){
model.addAttribute("empById", employeeDAO.getEmployeeById(id));
return "employees/employee-by-id";
}
@GetMapping("/new")
public String newEmployee(Model model){
model.addAttribute("employee", new Employee());
return "employees/new-employee";
}
@PostMapping("/create")
public String create(@ModelAttribute("employee") @Valid Employee employee, BindingResult bindingResult){
if(bindingResult.hasErrors()){
return "employees/new-employee";
}
employeeDAO.save(employee);
return "redirect:/employees/all-employees";
}
@GetMapping("/{id}/edit")
public String editEmployee(Model model, @PathVariable("id") int id){
model.addAttribute("employee", employeeDAO.getEmployeeById(id));
return "/employees/edit-employee";
}
@PatchMapping("/{id}/update")
public String updateEmployee(@ModelAttribute("employee") @Valid Employee employee,BindingResult bindingResult, @PathVariable("id") int id){
if(bindingResult.hasErrors()){
return "/employees/edit-employee";
}
employeeDAO.update(id,employee);
return "redirect:/employees/all-employees";
}
@DeleteMapping("/{id}/delete")
public String deleteEmployee(@PathVariable("id") int id) {
employeeDAO.delete(id);
return "redirect:/employees/all-employees";
}
}
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
@Component
@Transactional(readOnly = true)
public class EmployeeDAO {
private final SessionFactory sessionFactory;
@Autowired
public EmployeeDAO(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public List<Employee> getAllEmployees() {
Session session = sessionFactory.getCurrentSession();
return session.createQuery("select e from Employee e", Employee.class)
.getResultList();
}
public Employee getEmployeeById(int id) {
Session session = sessionFactory.getCurrentSession();
return session.get(Employee.class, id);
}
public Employee getEmployeeByEmail(String email) {
Session session = sessionFactory.getCurrentSession();
return session.get(Employee.class, email);
}
@Transactional
public void save(Employee employee) {
Session session = sessionFactory.getCurrentSession();
session.save(employee);
}
@Transactional
public void update(int id, Employee updatedEmp) {
Session session = sessionFactory.getCurrentSession();
Employee empToBeUpdated = session.get(Employee.class, id);
empToBeUpdated.setName(updatedEmp.getName());
empToBeUpdated.setSurname(updatedEmp.getSurname());
empToBeUpdated.setEmail(updatedEmp.getEmail());
}
@Transactional
public void delete(int id) {
Session session = sessionFactory.getCurrentSession();
session.remove(session.get(Employee.class, id));
}
}
import jakarta.persistence.*;
import jakarta.validation.constraints.*;
import java.util.Objects;
@Entity
@Table(name = "employee")
public class Employee {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@NotEmpty(message = "name should be not empty")
@NotBlank(message = "name should be not blank")
@Size(min = 2, max = 25, message = "name size should be 2-25 symbols")
@Pattern(regexp = "[A-Z]{1,1}[a-z]+",message = "name should start with a capital letter")
@Column(name = "name")
private String name;
@NotEmpty(message = "surname should be not empty")
@NotBlank(message = "surname should be not blank")
@Size(min = 2, max = 25, message = "surname size should be 2-25 symbols")
@Pattern(regexp = "[A-Z]{1,1}[a-z]+",message = "name should start with a capital letter")
@Column(name = "surname")
private String surname;
@NotEmpty(message = "email should be not empty")
@Email(message = "email should be valid")
@Column(name = "email")
private String email;
public Employee() {
}
public Employee(int id, String name, String surname, String email) {
this.id = id;
this.name = name;
this.surname = surname;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Employee{" +
"id=" + id +
", name='" + name + '\'' +
", surname='" + surname + '\'' +
", email='" + email + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Employee employee = (Employee) o;
return Objects.equals(id, employee.id) && Objects.equals(name, employee.name) && Objects.equals(surname, employee.surname) && Objects.equals(email, employee.email);
}
@Override
public int hashCode() {
return Objects.hash(id, name, surname, email);
}
}
3 тестирую подключение к базе в среде разработке - successful
4 когда пытаюсь добавить обьект в базу или удалить , открываю форму ввожу данные и когда нажимаю submit - ошибка подключения (28P01), именно в подключении, через консоль в среде могу получать данные из базы и добавлять
user = password = postgres
[2024-02-21 10:18:19,257] Artifact spring_mvc_thymeleaf:war exploded: Artifact is deployed successfully [2024-02-21 10:18:19,260] Artifact spring_mvc_thymeleaf:war exploded: Deploy took 29,467 milliseconds
21-Feb-2024 10:18:46.398 WARN [http-nio-8080-exec-8] org.hibernate.engine.jdbc.spi.SqlExceptionHelper.logExceptions SQL Error: 0, SQLState: 28P01