Что точно делает установку длины на столбце, делают в JPA?
@Column(name = "middle_name", nullable = false, length = 32)
public String getMiddleName() {
return this.middleName;
}
Я понимаю, что можно использовать аннотации для генерации схемы базы данных (DDL) на основе объектов объекта, но длина делает какой-либо вид проверки или усечения, когда персистентность происходит, или это только использовало для создания схемы?
Я также понимаю, что JPA может находиться сверх различных реализаций, реализация, в которой я обеспокоен в этом случае, в спящем режиме.
Выполняется ли длина какой-либо проверки или усечения, когда происходит сохранение, или она используется исключительно для создания схемы?
Атрибут length
аннотации Столбец
используется для указания :
Длина столбца. (Применяется только в том случае, если используется столбец со строковыми значениями.)
И используется только в сгенерированном DDL. В вашем примере результирующий столбец будет сгенерирован как VARCHAR (32)
, и попытка вставить более длинную строку приведет к ошибке SQL.
Для проверки вы можете добавить ограничение @Size (max = 32)
из Bean Validation API ( JSR 303 ). Я предоставил образец с работающим тестом здесь .
Указание как размера
, так и длины
может показаться избыточным, но согласно Приложению D. спецификации Bean Validation, создание DDL с учетом проверки Bean-компонента не обязательно для поставщиков сохраняемости. Поэтому используйте длину
для DDL, @Size
для проверки.
Если вам интересно, просто поместите реализацию Bean Validation в путь к классам с JPA 2.0. Для JPA 1.0 см. Этот предыдущий ответ .