Я создаю DDL из объектов Hibernate. Некоторые из объектов используют аннотации проверки достоверности JSR 303 (javax.validation.constraints.Max - один из них).Генерировать DDL из сущностей на основе JSR 303 аннотации валидатора
DDL сгенерирован с использованием Hibernate Tools 4.0.0 CR1 + связанной задачи Ant.
Проблема заключается в том, что все текстовые столбцы (хотя они могут быть ограничены @Max (32)) генерируются как VARCHAR (255). Я попытался отладить класс org.hibernate.tool.hbm2ddl.SchemaExport (и связанный). Из того, что я видел, нет места при создании org.hibernate.cfg.Ejb3Column, который будет содержать любую логику, связанную с аннотациями Validator.
Я также попытался изменить свойство «hibernate.validator.apply_to_ddl» - без каких-либо успехов.
Любые советы были бы весьма признательны.
Компоненты/Библиотеки:
- JDK 6
- Hibernate Validator 4.3.0 Final
- Hibernate Commons Аннотации 4.0.2 Final
- Hibernate Ядро 4.2.2 Final
- Hibernate Entity менеджер 4.2.2 Заключительный
Rafal
Но он также игнорирует аннотации Hibernate Validator, такие как @Length. И в моей предыдущей конфигурации: Hibernate 3.3.2 + Hibernate Tools 3.4.0 он работал отлично. Есть идеи ? –
'@ Length' является аннотацией, не относящейся к JPA, относящейся к Hibernate. Это простой ярлык для двух стандартных аннотаций '@ Min' /' @ Max', правильно? Я был бы удивлен, если бы 'hbm2ddl' когда-либо поддерживал это, но если вы так говорите ...Во всяком случае, единственным надежным вариантом AFAIK является '@ Column # length'. –
Marcel - Да, я уверен, что это сработало - потому что мы обновили версию Hibernate (core + tools + validator), а сгенерированный DDL больше не корректно устанавливает длину текстовых столбцов. Я мог только предположить, что это связано с совершенно другой инициализацией HIbernate Validator в новых версиях Hibernate (возможно, из-за поддержки JSR 303). Метаданные Hibernate по-прежнему обновляются (основываясь на ограничениях), но это происходит с помощью класса org.hibernate.cfg.beanvalidation.TypeSafeActivator, который запускается при создании SessionFactory. В любом случае - спасибо за помощь. Ура! –