2013-12-05 4 views
2

Мы используем Hibernate EntityManager 3.6.10 (реализует JPA 2). Я проверил спецификацию JPA и документацию Hibernate, но, похоже, это не проблема.Обозначает ли Hibernate/JPA @Postload аннотацию объекта «грязный»?

У меня есть ряд объектов сущностей, которые используют @PostLoad для обрезки хвостовые пробелы из постоянных полей, которые являются строками:

@Column(name="MY_DESCRIPTION", nullable=false, length=30) 
private String myDescription; 

@PostLoad 
private void trimStrings() { 
    myDescription = myDescription.trim(); 
} 

Будет ли это пометить объект «грязный» и генерировать дополнительный экономит?

ответ

2

Да, это будет означать, что поле грязное и создаст дополнительную экономию.

2

Как отметил Андрей, это означало бы, что объект был грязным. Если вам по-прежнему нужно обрезать значение, вы можете поместить обрезанную версию в поле переходного процесса, которое не сохраняется, и скрыть значение, которое сохраняется в базе данных. Вам также потребуется обновить атрибут, который будет сохранен при обновлении значения переходного процесса.

В качестве альтернативы, если в значении не должно быть пробелов, просто запустите обновление в БД, чтобы удалить все пробелы из этих столбцов.

+0

Трагически, БД - это все поля с фиксированной длиной пробела, и дизайн не подлежит обсуждению (тьфу). – user1071914

Смежные вопросы