session.merge () не обновляет сущность - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть класс Named Employee, который я обновляю с помощью метода session.merge ().Но этот метод выполняет оператор вставки, а не оператор обновления. Пожалуйста, помогите!

@Autowired
    private EntityManagerFactory entityManagerFactory;


 public void updateEmployee() {
            SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class);
        Session session = sessionFactory.openSession();
        Employee e = session.get(Employee.class, 3);
        e.setName("changed!");
        session.close();

        Session session1 = sessionFactory.openSession();
        Transaction transaction = session1.beginTransaction();
        session1.merge(e);
        transaction.commit();
        session1.close();

        }

Employee.class

@Entity
@Table(name = "Employee")
public class Employee implements Serializable {
    public Employee(String name) {
        super();
        this.name = name;
    }

    public Employee() {
        super();
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    @OneToOne
    @JoinColumn(name = "department")
    private Department department;

    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 Department getDepartment() {
        return department;
    }

    public void setDepartment(Department department) {
        this.department = department;
    }

    public Employee(String name, Department department) {
        this.name = name;
        this.department = department;
    }

    @Version
    private Long version;

    @Override
    public String toString() {
        return "Name :" + name + " Department" + department + "version:" + getVersion();
    }

    public Long getVersion() {
        return version;
    }

    public void setVersion(Long version) {
        this.version = version;
    }
}

EmployeeController.java

 @PutMapping(value = "/updateEmployee")
        public void updateEmployee() {
            dataServiceImpl.updateEmployee();
        }

Поскольку я только нажимаю на этот API, вместо запроса на обновление запускается запрос на выборку. Может кто-нибудь объяснить, почему это происходит.

Весь коддоступно здесь - https://github.com/iftekharkhan09/SpringAuthSecurity/tree/master/HibernateCaching

Любая помощь высоко ценится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...