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


Ответы (0 шт):