Атрибуты Spring Boot 2 Hibernate 5 @Embeddable генерируют неправильный размер поля в H2 (create-drop) - PullRequest
0 голосов
/ 30 апреля 2018

Я использую 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

1 Ответ

0 голосов
/ 30 апреля 2018

Для зарегистрированных, проблема в отсутствующей аннотации @Valid для поля Address:

@NotNull
@Valid
private Address address;

Без этой аннотации каскадирование не включено, а аннотации ограничений в Address игнорируются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...