After merging in an entity we can change its property and the EntityManager would update the database automatically.
The following code is from PersonDaoImpl.java.
package com.java2s.common; import java.util.Date; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.springframework.transaction.annotation.Transactional; @Transactional public class PersonDaoImpl { public void test() { Employee emp = new Employee(); emp.setName("Tom"); em.persist(emp); emp = em.find(Employee.class, emp.getId()); Employee managedEmp = em.merge(emp); managedEmp.setLastAccessTime(new Date()); } @PersistenceContext private EntityManager em; }
The following code is from Employee.java.
package com.java2s.common; import java.util.Date; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Temporal; import javax.persistence.TemporalType; @Entity public class Employee { @Id private int id; private String name; @Temporal(TemporalType.TIMESTAMP) private Date lastAccessTime; 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 Date getLastAccessTime() { return lastAccessTime; } public void setLastAccessTime(Date lastAccessTime) { this.lastAccessTime = lastAccessTime; } public String toString() { return "Employee " + getId() + ": name: " + getName() + " lastAccessTime: " + getLastAccessTime(); } }
The following is the database dump.
Table Name: EMPLOYEE Row: Column Name: ID, Column Type: INTEGER: Column Value: 0 Column Name: LASTACCESSTIME, Column Type: TIMESTAMP: Column Value: 2014-12-29 13:59:56.633 Column Name: NAME, Column Type: VARCHAR: Column Value: Tom