PogadaevEA
6/24/2019 - 9:08 AM

Using Hibernate Types

Использование пользовательских типов

В БД сохраняется в виде строкового представления type = "jsonb" например: [{"id": 1002456, "name": "FASTFOOD", "created": 1561365272767}]

  • Подключаемая зависимость: compile "com.vladmihalcea:hibernate-types-52:2.4.4"
/**
 * Категории блюд кухни
 */
@TypeDef(name = "jsonb", typeClass = JsonBinaryType.class)
@Entity
@Table(name = "t_category")
public class Category implements Serializable {

    public static final String FASTFOOD = "FASTFOOD";
    public static final String COFFEE = "COFFEE";

    /**
     * Идентификатор
     */
    @Id
    @Column(name = "id")
    @Getter private String id;

    /**
     * Наименование категории
     */
    @Column(name = "name")
    @Getter @Setter private String name;

    /**
     * Список всех блюд в этой категории
     */
    @Type(type = "jsonb") //преобразуемый тип
    @Column(columnDefinition = "jsonb", name = "dishes")
    @Getter @Setter private List<Dish> dishes;

    /**
     * Дата создания
     */
    @Column(name = "created")
    @Temporal(TemporalType.TIMESTAMP)
    @Getter @Setter private Date created;

}