При использовании JPA для автоматического создания таблицы, если вам нужно добавить аннотации, вам обычно нужно использовать атрибут columnDefinition аннотации столбца таким образом.
@Column(columnDefinition="INT COMMENT '...'")
private int foo;
Таким образом, вы можете добавлять комментарии, но в комментарии нужно вписывать фрагменты SQL. Мало того, что писать хлопотно, так еще и при смене баз данных очень вероятно столкнуться с проблемами несовместимости из-за разных диалектов SQL. В этой статье представлен метод, реализованный интегратором Hibernate без изменения свойства columnDefinition.
Сначала определите аннотацию Comment:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
public @interface Comment {
String value() default "";
}
Добавьте в проект CommentIntegrator.java и добавьте конфигурацию Hibernate:
@Component
public class HibernateConfig implements HibernatePropertiesCustomizer {
@Override
public void customize(Map<String, Object> hibernateProperties) {
hibernateProperties.put("hibernate.use_sql_comments", true);
hibernateProperties.put("hibernate.integrator_provider",
(IntegratorProvider) () -> Collections.singletonList(CommentIntegrator.INSTANCE));
}
}
После выполнения вышеуказанных шагов вы можете напрямую использовать аннотацию столбца:
@Table
@Entity
@Comment("Table comment")
public class DemoTable {
@Id
@GeneratedValue
@Column
@Comment("Identifier comment")
private Integer id;
@Column
@Comment("Field comment")
private String field;
getter setter ...
}
Полный код: