From 86a03336f4ac1c8f82c3e1d3caf4de0be32c5113 Mon Sep 17 00:00:00 2001 From: Juan Moreno Date: Mon, 19 Mar 2018 21:28:37 -0300 Subject: [PATCH] BAEL-1159 - Simplified example (#3853) * Squashed commit of the following: commit b31955df9638a6217a804e61faa230d8eacb293b Author: Juan Moreno Date: Wed Feb 21 22:45:52 2018 -0300 Sample code for BAEL-1159 - Working with Kotlin and JPA - earth001@gmail.com * Squashed commit of the following: commit 4e6e27c914a401ee6bc599c7ffe913384137646a Author: Juan Moreno Date: Wed Feb 21 23:26:20 2018 -0300 Fix package names commit b31955df9638a6217a804e61faa230d8eacb293b Author: Juan Moreno Date: Wed Feb 21 22:45:52 2018 -0300 Sample code for BAEL-1159 - Working with Kotlin and JPA - earth001@gmail.com * Added sample with null fields * Removed unused dependency * BAEL-1159 - Simplified example --- spring-mvc-kotlin/pom.xml | 2 +- .../kotlin/com/baeldung/kotlin/jpa/Person.kt | 13 +++++-------- .../com/baeldung/kotlin/jpa/PhoneNumber.kt | 4 +--- .../jpa/HibernateKotlinIntegrationTest.kt | 18 +++++++++++++++--- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/spring-mvc-kotlin/pom.xml b/spring-mvc-kotlin/pom.xml index 8f9c58854d..0202f1a81b 100644 --- a/spring-mvc-kotlin/pom.xml +++ b/spring-mvc-kotlin/pom.xml @@ -19,7 +19,7 @@ UTF-8 - 5.2.13.Final + 5.2.15.Final 1.2.30 4.3.10.RELEASE 3.0.7.RELEASE diff --git a/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/jpa/Person.kt b/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/jpa/Person.kt index 076dcdac46..2b2a2bd6d9 100644 --- a/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/jpa/Person.kt +++ b/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/jpa/Person.kt @@ -1,24 +1,21 @@ -package com.baeldung.jpa +package com.baeldung.kotlin.jpa import javax.persistence.CascadeType import javax.persistence.Column import javax.persistence.Entity -import javax.persistence.FetchType import javax.persistence.GeneratedValue import javax.persistence.GenerationType import javax.persistence.Id import javax.persistence.OneToMany -import javax.persistence.Table @Entity -@Table(name = "person") -data class Person( +data class Person @JvmOverloads constructor( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Int, @Column(nullable = false) val name: String, @Column(nullable = true) - val email: String?, - @Column(nullable = true) - @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.ALL]) val phoneNumbers: List?) \ No newline at end of file + val email: String? = null, + @OneToMany(cascade = [CascadeType.ALL]) + val phoneNumbers: List? = null) diff --git a/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/jpa/PhoneNumber.kt b/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/jpa/PhoneNumber.kt index 25894275f6..734e8b4cc4 100644 --- a/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/jpa/PhoneNumber.kt +++ b/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/jpa/PhoneNumber.kt @@ -1,14 +1,12 @@ -package com.baeldung.jpa +package com.baeldung.kotlin.jpa 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 = "phone_number") data class PhoneNumber( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/spring-mvc-kotlin/src/test/kotlin/com/baeldung/kotlin/jpa/HibernateKotlinIntegrationTest.kt b/spring-mvc-kotlin/src/test/kotlin/com/baeldung/kotlin/jpa/HibernateKotlinIntegrationTest.kt index 94559812fa..adac9d0cbf 100644 --- a/spring-mvc-kotlin/src/test/kotlin/com/baeldung/kotlin/jpa/HibernateKotlinIntegrationTest.kt +++ b/spring-mvc-kotlin/src/test/kotlin/com/baeldung/kotlin/jpa/HibernateKotlinIntegrationTest.kt @@ -1,7 +1,5 @@ package com.baeldung.kotlin.jpa -import com.baeldung.jpa.Person -import com.baeldung.jpa.PhoneNumber import org.hibernate.cfg.Configuration import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase import org.hibernate.testing.transaction.TransactionUtil.doInHibernate @@ -31,12 +29,25 @@ class HibernateKotlinIntegrationTest : BaseCoreFunctionalTestCase() { } @Test - fun givenPerson_whenSaved_thenFound() { + fun givenPersonWithFullData_whenSaved_thenFound() { doInHibernate(({ this.sessionFactory() }), { session -> val personToSave = Person(0, "John", "jhon@test.com", Arrays.asList(PhoneNumber(0, "202-555-0171"), PhoneNumber(0, "202-555-0102"))) session.persist(personToSave) val personFound = session.find(Person::class.java, personToSave.id) session.refresh(personFound) + + assertTrue(personToSave == personFound) + }) + } + + @Test + fun givenPerson_whenSaved_thenFound() { + doInHibernate(({ this.sessionFactory() }), { session -> + val personToSave = Person(0, "John") + session.persist(personToSave) + val personFound = session.find(Person::class.java, personToSave.id) + session.refresh(personFound) + assertTrue(personToSave == personFound) }) } @@ -48,6 +59,7 @@ class HibernateKotlinIntegrationTest : BaseCoreFunctionalTestCase() { session.persist(personToSave) val personFound = session.find(Person::class.java, personToSave.id) session.refresh(personFound) + assertTrue(personToSave == personFound) }) }