Я использую Spring Boot 2 (2.0.1.RELEASE) с версией Hibernate по умолчанию с H2 db, и у меня проблема с размерами полей в таблице, которая генерируется при использовании @ Embeddable.
Вот мой код:
@Entity
public class Publisher {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@NotBlank
@Size(min=2, max=150)
private String name;
@NotNull
private Address address;
...
}
@Embeddable
public class Address {
@NotBlank
@Size(min=3, max=100)
private String street;
@NotBlank
@Size(min=2, max=100)
private String city;
@NotBlank
@Size(min=2, max=100)
private String county;
@NotBlank
@Size(min=7, max=8)
private String postcode;
...
}
Когда запускается Spring Boot, он создает таблицы в H2. Размер столбца в атрибуте «name» в Publisher правильно установлен равным 150, используя максимальное значение из аннотации @Size.
Максимальные значения в аннотациях @Size для встроенного объекта Address игнорируются и устанавливаются равными 255 символам max для всех 4 полей.
Это ожидаемое поведение или столбцы БД из встроенных полей должны быть установлены на максимальное значение из аннотаций @Size в объекте Address?
Я знаю, что могу установить это, используя значение длины аннотации @Column, но я надеялся, что это сработает без дополнительной аннотации @Column.
Извините, если это дубликат, но я искал несколько часов, прежде чем решил опубликовать свой вопрос здесь.
Спасибо
Kaz