diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/Student.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/Student.java
new file mode 100644
index 0000000000..6eced20779
--- /dev/null
+++ b/persistence-modules/java-jpa/src/main/java/com/baeldung/jpa/entity/Student.java
@@ -0,0 +1,75 @@
+package com.baeldung.jpa.entity;
+
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+
+import com.baeldung.util.Gender;
+
+@Entity
+@Table(name="STUD_NAME")
+public class Student {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private Long id;
+ @Column(name = "STUD_NAME", length = 50, nullable = false, unique = false)
+ private String name;
+ @Transient
+ private Integer age;
+ @Temporal(TemporalType.DATE)
+ private Date birthDate;
+ @Enumerated(EnumType.STRING)
+ private Gender gender;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Integer getAge() {
+ return age;
+ }
+
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+
+ public Date getBirthDate() {
+ return birthDate;
+ }
+
+ public void setBirthDate(Date birthDate) {
+ this.birthDate = birthDate;
+ }
+
+ public Gender getGender() {
+ return gender;
+ }
+
+ public void setGender(Gender gender) {
+ this.gender = gender;
+ }
+
+}
diff --git a/persistence-modules/java-jpa/src/main/java/com/baeldung/util/Gender.java b/persistence-modules/java-jpa/src/main/java/com/baeldung/util/Gender.java
new file mode 100644
index 0000000000..13f08d995c
--- /dev/null
+++ b/persistence-modules/java-jpa/src/main/java/com/baeldung/util/Gender.java
@@ -0,0 +1,6 @@
+package com.baeldung.util;
+
+public enum Gender {
+ MALE,
+ FEMALE
+}
diff --git a/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml b/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml
index 5422afa4a3..2105a80d7d 100644
--- a/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml
+++ b/persistence-modules/java-jpa/src/main/resources/META-INF/persistence.xml
@@ -129,5 +129,25 @@
+
+
+ org.hibernate.jpa.HibernatePersistenceProvider
+ com.baeldung.jpa.entity.Student
+ true
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/entity/StudentEntityIntegrationTest.java b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/entity/StudentEntityIntegrationTest.java
new file mode 100644
index 0000000000..2dc5d7c5f2
--- /dev/null
+++ b/persistence-modules/java-jpa/src/test/java/com/baeldung/jpa/entity/StudentEntityIntegrationTest.java
@@ -0,0 +1,83 @@
+package com.baeldung.jpa.entity;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+import javax.persistence.TypedQuery;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.baeldung.util.Gender;
+
+public class StudentEntityIntegrationTest {
+
+ private EntityManagerFactory emf;
+ private EntityManager em;
+
+ @Before
+ public void setup() {
+ emf = Persistence.createEntityManagerFactory("jpa-entity-definition");
+ em = emf.createEntityManager();
+ }
+
+ @Test
+ public void persistStudentThenRetrieveTheDetails() {
+ Student student = createStudentWithRelevantDetails();
+ persist(student);
+ clearThePersistenceContext();
+ List students = getStudentsFromTable();
+ checkAssertionsWith(students);
+ }
+
+ @After
+ public void destroy() {
+ if (em != null) {
+ em.close();
+ }
+ if (emf != null) {
+ emf.close();
+ }
+ }
+
+ private void clearThePersistenceContext() {
+ em.clear();
+ }
+
+ private void checkAssertionsWith(List students) {
+ assertEquals(1, students.size());
+ Student john = students.get(0);
+ assertEquals(1L, john.getId().longValue());
+ assertEquals(null, john.getAge());
+ assertEquals("John", john.getName());
+ }
+
+ private List getStudentsFromTable() {
+ String selectQuery = "SELECT student FROM Student student";
+ TypedQuery selectFromStudentTypedQuery = em.createQuery(selectQuery, Student.class);
+ List students = selectFromStudentTypedQuery.getResultList();
+ return students;
+ }
+
+ private void persist(Student student) {
+ em.getTransaction().begin();
+ em.persist(student);
+ em.getTransaction().commit();
+ }
+
+ private Student createStudentWithRelevantDetails() {
+ Student student = new Student();
+ student.setAge(20); // the 'age' field has been annotated with @Transient
+ student.setName("John");
+ student.setBirthDate(new Date());
+ student.setGender(Gender.MALE);
+ return student;
+ }
+
+}