title: I am not able to update my entity table (Spring Boot 2 hibernate 5)
body: <p>I am using Spring boot 2.1.2, Hibernate 5 and mysql 5.7.25. And hibernate  is coming from spring data-jpa. I can insert the data into the entity table. But the issues is with update operation. When i try to update the entity, its not working. I cannot find out issue. Someone please help me to sort out the issue.</p>
  
  <p>Pom.xml</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;project xmlns="http://maven.apache.org/POM/4.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;
      &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
      &lt;parent&gt;
          &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
          &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
          &lt;version&gt;2.1.2.RELEASE&lt;/version&gt;
          &lt;relativePath /&gt; &lt;!-- lookup parent from repository --&gt;
      &lt;/parent&gt;
      &lt;groupId&gt;com.app&lt;/groupId&gt;
      &lt;artifactId&gt;TestApp&lt;/artifactId&gt;
      &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
      &lt;name&gt;TestApp&lt;/name&gt;
      &lt;description&gt;A service application.&lt;/description&gt;
  
      &lt;properties&gt;
          &lt;java.version&gt;1.8&lt;/java.version&gt;
      &lt;/properties&gt;
  
      &lt;dependencies&gt;
          &lt;dependency&gt;
              &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
              &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
          &lt;/dependency&gt;
  
          &lt;dependency&gt;
              &lt;groupId&gt;mysql&lt;/groupId&gt;
              &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
              &lt;scope&gt;runtime&lt;/scope&gt;
          &lt;/dependency&gt;
  
          &lt;dependency&gt;
              &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
              &lt;artifactId&gt;spring-boot-starter-data-jpa&lt;/artifactId&gt;
          &lt;/dependency&gt;
  
          &lt;dependency&gt;
              &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
              &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
              &lt;scope&gt;test&lt;/scope&gt;
          &lt;/dependency&gt;
  
      &lt;/dependencies&gt;
  
      &lt;build&gt;
          &lt;plugins&gt;
              &lt;plugin&gt;
                  &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
                  &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
              &lt;/plugin&gt;
          &lt;/plugins&gt;
      &lt;/build&gt;
  
  &lt;/project&gt;
  </code></pre>
  
  <p>Property File</p>
  
  <pre><code># Application running port
  server.port=8000
  
  # Application running port
  server.servlet.contextPath=/
  
  # Log files
  logging.level.org.springframework.web: ERROR
  logging.level.org.hibernate: ERROR
  
  #DB config
  spring.datasource.url=jdbc:mysql://localhost:3306/test_app
  spring.datasource.username=root
  spring.datasource.password=root
  spring.jpa.show-sql=true
  
  #DB pool config
  # Maximum number of milliseconds that a client will wait for a connection from connection pool
  spring.datasource.hikari.connection-timeout=20000 
  # Minimum number of idle connections
  spring.datasource.hikari.minimum-idle=10
  # Maximum pool size
  spring.datasource.hikari.maximum-pool-size=100
  # Maximum amount of time in milliseconds that a connection is allowed to sit idle
  spring.datasource.hikari.idle-timeout=900000 
  # Maximum life time in milliseconds of a connection in pool after it is closed
  spring.datasource.hikari.max-lifetime=10000
  # auto-commit behavior of connections returned from pool
  spring.datasource.hikari.auto-commit=true 
  
  # Hibernayte config
  spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
  spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
  
  # toenable transaction
  logging.level.org.springframework.transaction.interceptor=TRACE
  </code></pre>
  
  <p>Entity Class</p>
  
  <pre><code>package com.app.model;
  
  import java.io.Serializable;
  import java.util.Calendar;
  
  import javax.persistence.Column;
  import javax.persistence.Entity;
  import javax.persistence.GeneratedValue;
  import javax.persistence.GenerationType;
  import javax.persistence.Id;
  import javax.persistence.Table;
  
  @Entity
  @Table(name = "tbl_user_account")
  public class UserAccount implements Serializable {
  
      /**
       * 
       */
      private static final long serialVersionUID = 1L;
  
      @Id
      @GeneratedValue(strategy = GenerationType.IDENTITY)
      @Column(name = "id")
      private Integer id;
  
      @Column(name = "username", nullable = false)
      String username;
  
      @Column(name = "password", nullable = false)
      private String password;
  
      @Column(name = "active", nullable = false)
      private Integer active;
  
      @Column(name = "created_date", nullable = false)
      private Calendar createdDate;
  
      @Column(name = "created_by")
      private Integer createdBy;
  
      @Column(name = "updated_date")
      private Calendar updatedDate;
  
      @Column(name = "updated_by")
      private Integer updatedBy;
  
      public Integer getCreatedBy() {
          return createdBy;
      }
  
  
      public String getUsername() {
          return username;
      }
  
      public void setUsername(String username) {
          this.username = username;
      }
  
      public void setCreatedBy(Integer createdBy) {
          this.createdBy = createdBy;
      }
  
      public Integer getUpdatedBy() {
          return updatedBy;
      }
  
      public void setUpdatedBy(Integer updatedBy) {
          this.updatedBy = updatedBy;
      }
  
      public UserAccount() {
          super();
          // TODO Auto-generated constructor stub
      }
  
      public Integer getId() {
          return id;
      }
  
      public void setId(Integer id) {
          this.id = id;
      }
  
      public String getPassword() {
          return password;
      }
  
      public void setPassword(String password) {
          this.password = password;
      }
  
      public Integer getActive() {
          return active;
      }
  
      public void setActive(Integer active) {
          this.active = active;
      }
  
      public Calendar getCreatedDate() {
          return createdDate;
      }
  
      public void setCreatedDate(Calendar createdDate) {
          this.createdDate = createdDate;
      }
  
      public Calendar getUpdatedDate() {
          return updatedDate;
      }
  
      public void setUpdatedDate(Calendar updatedDate) {
          this.updatedDate = updatedDate;
      }
  
  }
  </code></pre>
  
  <p>DAO Interface</p>
  
  <pre><code>package com.app.dao;
  
  public interface UserAccountDao {
  
      void saveAndUpdate();
  
  }
  </code></pre>
  
  <p>DAOImpl</p>
  
  <pre><code> package com.app.daoImpl;
  
      import java.util.Calendar;
      import java.util.List;
  
      import javax.persistence.EntityManagerFactory;
      import javax.transaction.Transactional;
  
      import org.hibernate.Session;
      import org.hibernate.SessionFactory;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.context.annotation.Scope;
      import org.springframework.stereotype.Repository;
  
      import com.app.dao.UserAccountDao;
      import com.app.model.UserAccount;
  
      @Repository("UserAccountDao")
      @Scope("prototype")
      public class UserAccountDaoImpl implements UserAccountDao {
  
          /**
           * 
           */
          private static final long serialVersionUID = 1L;
  
          @Autowired
          private EntityManagerFactory entityManagerFactory;
  
          public Session getSession() {
              return entityManagerFactory.unwrap(SessionFactory.class).openSession();
          }
  
  
          @Override
          @Transactional
          public void saveAndUpdate() {
              Session session = getSession();
              UserAccount userAccount =new UserAccount("Test@1235", "Test@1234", 1, Calendar.getInstance(), 1);
              session.save(userAccount);
              userAccount.setPassword("new password");
              session.saveOrUpdate(userAccount);
          }
  
      }
  </code></pre>
  
  <p>Service Interface  </p>
  
  <pre><code>     package com.app.service;
  
  public interface UserAccountService {
      void saveAndUpdateUserData();
  }
  </code></pre>
  
  <p>Service Class</p>
  
  <pre><code>     package com.app.serviceImpl;
  
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.context.annotation.Scope;
  import org.springframework.stereotype.Service;
  
  import com.app.dao.UserAccountDao;
  import com.app.service.UserAccountService;
  
  @Service("UserAccountService")
  @Scope("prototype")
  public class UserAccountServiceImpl implements UserAccountService {
  
      @Autowired
      private UserAccountDao userAccountDao;
  
      @Override
      public void saveAndUpdateUserData() {
          userAccountDao.saveAndUpdate();
  
      }
  
  
  
  }
  </code></pre>
  
  <p>Controller Class</p>
  
  <pre><code>package com.app.controller;
  
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.web.bind.annotation.GetMapping;
  import org.springframework.web.bind.annotation.RequestMapping;
  import org.springframework.web.bind.annotation.RestController;
  
  import com.app.service.UserAccountService;
  
  @RestController
  @RequestMapping("/test")
  public class TestController {
  
  @Autowired
  UserAccountService userAccountService;
  
  
      @GetMapping()
      public String addUser() {
  
          userAccountService.saveAndUpdateUserData();
          return "Success";
      }
  
  }
  </code></pre>