Перейти к содержимому
G_Arthur_

Использование jsonb в Hibernate 6

1 мин чтения

В Hibernate 6 был реализован маппинг JSON. Всё, что теперь требуется — над полем со своей сущностью проставить аннотацию @JdbcTypeCode и установить тип SqlTypes.JSON.

Пример с полем типа Map:

class Example {
    @JdbcTypeCode(SqlTypes.JSON)
    private Map<String, String> payload;
}

Пример с своими классами — SomeEntity с полем типа SomeJson:

//file SomeEntity.java
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.GeneratedValue;
import org.hibernate.annotations.JdbcTypeCode;
import org.hibernate.type.SqlTypes;
import lombok.Data;

@Data
@Entity
public class SomeEntity {

    @Id
    @GeneratedValue
    private Long id;

    @JdbcTypeCode(SqlTypes.JSON)
    private SomeJson jsonField;
}
//file SomeJson.java
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Map;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class SomeJson implements Serializable {
    private Long longValue;
    private String stringValue;
    private Map<String, String> customValues;
}

upd:

На habr вышла статья про это, для более ранних версий рекомендуют ознакомиться с библиотекой hibernate-types.

Похожие записи

3 мин чтения

@Transactional

Разбор аннотации @Transactional в Spring: транзакции, уровни изолированности ACID, феномены грязного чтения и фантомов, механизм Proxy.

1 мин чтения

Gradle & Maven

Анализ перехода с Maven на Gradle: преимущества, подводные камни с кастомными плагинами и итоги.