BAEL-1159 - Added sample with null fields (#3756)
* Squashed commit of the following: commit b31955df9638a6217a804e61faa230d8eacb293b Author: Juan Moreno <earth001@gmail.com> 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 <earth001@gmail.com> Date: Wed Feb 21 23:26:20 2018 -0300 Fix package names commit b31955df9638a6217a804e61faa230d8eacb293b Author: Juan Moreno <earth001@gmail.com> 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
This commit is contained in:
parent
4526bb6add
commit
67092ccc49
|
@ -20,7 +20,7 @@
|
||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<hibernate.version>5.2.13.Final</hibernate.version>
|
<hibernate.version>5.2.13.Final</hibernate.version>
|
||||||
<kotlin.version>1.2.21</kotlin.version>
|
<kotlin.version>1.2.30</kotlin.version>
|
||||||
<spring.version>4.3.10.RELEASE</spring.version>
|
<spring.version>4.3.10.RELEASE</spring.version>
|
||||||
<thymeleaf.version>3.0.7.RELEASE</thymeleaf.version>
|
<thymeleaf.version>3.0.7.RELEASE</thymeleaf.version>
|
||||||
<h2.version>1.4.196</h2.version>
|
<h2.version>1.4.196</h2.version>
|
||||||
|
|
|
@ -1,15 +1,24 @@
|
||||||
package com.baeldung.jpa
|
package com.baeldung.jpa
|
||||||
|
|
||||||
|
import javax.persistence.CascadeType
|
||||||
|
import javax.persistence.Column
|
||||||
import javax.persistence.Entity
|
import javax.persistence.Entity
|
||||||
|
import javax.persistence.FetchType
|
||||||
import javax.persistence.GeneratedValue
|
import javax.persistence.GeneratedValue
|
||||||
import javax.persistence.GenerationType
|
import javax.persistence.GenerationType
|
||||||
import javax.persistence.Id
|
import javax.persistence.Id
|
||||||
|
import javax.persistence.OneToMany
|
||||||
import javax.persistence.Table
|
import javax.persistence.Table
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "person")
|
@Table(name = "person")
|
||||||
data class Person(
|
data class Person(
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
val id: Int,
|
val id: Int,
|
||||||
val name: String)
|
@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<PhoneNumber>?)
|
|
@ -0,0 +1,17 @@
|
||||||
|
package com.baeldung.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)
|
||||||
|
val id: Int,
|
||||||
|
@Column(nullable = false)
|
||||||
|
val number: String)
|
|
@ -1,6 +1,7 @@
|
||||||
package com.baeldung.kotlin.jpa
|
package com.baeldung.kotlin.jpa
|
||||||
|
|
||||||
import com.baeldung.jpa.Person
|
import com.baeldung.jpa.Person
|
||||||
|
import com.baeldung.jpa.PhoneNumber
|
||||||
import org.hibernate.cfg.Configuration
|
import org.hibernate.cfg.Configuration
|
||||||
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase
|
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase
|
||||||
import org.hibernate.testing.transaction.TransactionUtil.doInHibernate
|
import org.hibernate.testing.transaction.TransactionUtil.doInHibernate
|
||||||
|
@ -21,7 +22,7 @@ class HibernateKotlinIntegrationTest : BaseCoreFunctionalTestCase() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getAnnotatedClasses(): Array<Class<*>> {
|
override fun getAnnotatedClasses(): Array<Class<*>> {
|
||||||
return arrayOf(Person::class.java)
|
return arrayOf(Person::class.java, PhoneNumber::class.java)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun configure(configuration: Configuration) {
|
override fun configure(configuration: Configuration) {
|
||||||
|
@ -31,13 +32,22 @@ class HibernateKotlinIntegrationTest : BaseCoreFunctionalTestCase() {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun givenPerson_whenSaved_thenFound() {
|
fun givenPerson_whenSaved_thenFound() {
|
||||||
val personToSave = Person(0, "John")
|
|
||||||
doInHibernate(({ this.sessionFactory() }), { session ->
|
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)
|
session.persist(personToSave)
|
||||||
assertTrue(session.contains(personToSave))
|
|
||||||
})
|
|
||||||
doInHibernate(({ this.sessionFactory() }), { session ->
|
|
||||||
val personFound = session.find(Person::class.java, personToSave.id)
|
val personFound = session.find(Person::class.java, personToSave.id)
|
||||||
|
session.refresh(personFound)
|
||||||
|
assertTrue(personToSave == personFound)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenPersonWithNullFields_whenSaved_thenFound() {
|
||||||
|
doInHibernate(({ this.sessionFactory() }), { session ->
|
||||||
|
val personToSave = Person(0, "John", null, null)
|
||||||
|
session.persist(personToSave)
|
||||||
|
val personFound = session.find(Person::class.java, personToSave.id)
|
||||||
|
session.refresh(personFound)
|
||||||
assertTrue(personToSave == personFound)
|
assertTrue(personToSave == personFound)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue