no

How to Use Lob Datatype in PostgreSQL

1. Problem

Here's the typical code we use when creating a Lob column.

Column definition

@NotNull
@Lob
@Column(name = "message")
private String message;

But when we create our tables we would encounter the error below, because PostgreSQL doesn't support lob.

Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [message] in table [comm_messages]; found [text (Types#VARCHAR)], but expecting [oid (Types#CLOB)]
    at org.hibernate.tool.schema.internal.AbstractSchemaValidator.validateColumnType(AbstractSchemaValidator.java:167)

2. Solution

To resolve this problem we can implement several solutions.

2.1 Set the column to TEXT in the table. With this approach, we need to manually edit the entity where the column is defined.

@NotNull
@Lob
@Column(name = "message", columnDefinition = "TEXT")
private String message;

2.2 If you are using Spring, you can set the non_contextual_creation to true in the application property file.

spring:
  jpa:
    properties:
      hibernate:
        jdbc:
          lob:
            non_contextual_creation: true

Related

spring-data 7368669332546687435

Post a Comment Default Comments

item