2013-03-08 1 views
0

У меня есть некоторые поля в базе данных с фиксированной длиной. Я довольно новичок в JPA и JSR 303.JPA против проверки JavaBeans (JSR 303) по сравнению с вашим решением: автоматически обрезать поле до его сохранения

JPA не позволит мне сохранить объект, у которого есть поле с большим размером, чем разрешено в db (именно это я хочу); и описание @Column с параметром length полезно только для генерации ddl.

Кроме того, AFAIK, описывающий параметры с помощью JSR 303's @Size, вызовет только ответ, когда я хочу, чтобы поле было изменено.

Мне было интересно, какой был стандартный способ обработки этого усечения, используя JSR 303, JPA или что-то еще.

EDIT: Можно ли включить автоматическое усечение в JPA?

С наилучшими пожеланиями

+0

В зависимости от используемой базы данных вы можете просто автоматически усечь длинные поля. –

+0

Установщик вашего поля в объекте может просто обрезать значение. –

+0

Спасибо за ответ. База данных - это Oracle 10g, но я не ищу способ DB для этого. Плюс мой администратор базы данных взволнован. – BenoitParis

ответ

1

Как JB Nizet предположили, что это может быть сделано с сеттерами. Но это не сделает его строгим Java Bean.

Вы также можете реализовать его в базе данных, но это сделает вашу реализацию менее переносимой.

Лучшим способом было бы сохранить эту логику вне боба или БД. То есть в вашей логике приложения.

Update:

Если вам нужно сделать усечение в JPA взглянуть на @EntityListeners и обратных вызовов. http://docs.jboss.org/hibernate/orm/4.0/hem/en-US/html/listeners.html

+0

Да, я согласен. Я должен помещать его в какой-то класс форматирования данных. Тем не менее, я хотел избегать описания полей Entity далеко. Знаете ли вы о хорошем шаблоне? – BenoitParis