Prerequisites
We will check the database tables for the given environment.
Environment
Spring Boot ver 3.3.1
gradle
kotlin
jdk 21
psql (PostgreSQL) 14.16
Database
CREATE TABLE IF NOT EXISTS SAMPLE_TABLE (
    id SERIAL PRIMARY KEY,
    json_data JSONB NOT NULL
);
Please ensure that Spring Boot is connected to the PostgreSQL server by inserting data into the database using tools such as psql, and confirm it using JPA's .findAll(), etc.
Sample Code
build.gradle.kts
Add the necessary dependencies
```kotlin name=build.gradle.kts
dependencies {
    // Required for setting the jsonb type
    // Adjust the version of hypersistence-utils-hibernate as needed for your environment
    implementation "io.hypersistence:hypersistence-utils-hibernate-60:3.5.2"
}
## SampleEntity.kt
```kotlin name=SampleEntity.kt
import io.hypersistence.utils.hibernate.type.json.JsonType
import jakarta.persistence.*
import org.hibernate.annotations.Type
@Entity
@Table(name = "SAMPLE_TABLE")
data class SampleEntity(
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    val id: Long?,
    // Declaring @Type will convert the String to Json
    @Type(JsonType::class)
    // Specify jsonb with columnDefinition
    @Column(name = "json_data", columnDefinition = "jsonb")
    val jsonData: String
){
    // Add a no-argument constructor
    constructor() : this(null,  "")
}
SampleRepository.kt
```kotlin name=SampleRepository.kt
import com.sample.SampleEntity
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.stereotype.Repository
@Repository
interface SampleRepository : JpaRepository
## SampleService.kt
```kotlin name=SampleService.kt
            val entity = SampleEntity(
                // Convert json to string before passing
                jsonData = "{\"name\":\"dummyName\"}"
            )
            val savedEntity = sampleEntityRepository.save(entity)
    
Top comments (1)
This was a very useful article, which I had not been surprised to find out about before!