If we don't want to save a property to database we can mark that field
with @Transient
annotation.
The following code is from Professor.java.
package com.java2s.common; import java.util.Locale; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Transient; @Entity public class Professor { @Id private int id; private String name; private long salary; @Transient private String convertedName; 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; convertedName = convertName(name); } public long getSalary() { return salary; } public void setSalary(long salary) { this.salary = salary; } public String getConvertedName() { return convertedName; } public String toString() { return "Employee " + " id: " + getId() + " name: " + getName() + " converted name: " + getConvertedName() + " salary: " + getSalary(); } protected String convertName(String name) { // Convert to upper case Canadian... return name.toUpperCase(Locale.CANADA); } }
The following code is from PersonDaoImpl.java.
package com.java2s.common; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import org.springframework.transaction.annotation.Transactional; @Transactional public class PersonDaoImpl { public void test() { Professor emp = new Professor(); emp.setId(1); emp.setName("name"); emp.setSalary(12345); em.persist(emp); } @PersistenceContext private EntityManager em; }
The following is the database dump.
Table Name: PROFESSOR Row: Column Name: ID, Column Type: INTEGER: Column Value: 1 Column Name: NAME, Column Type: VARCHAR: Column Value: name Column Name: SALARY, Column Type: BIGINT: Column Value: 12345