Использование jsonb в Hibernate 6
В 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. Как-то давно, где-то я её использовал, вот только не помню где