| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Hibernate, MappedSuperclass и исключение поля |
| Автор: afon 3.3.2010, 20:03 | ||||||
| Как исключить поле из маппинга в классе наследнике? Ситуация: Класс Card, в котором есть ссылка на класс TaxPolicy (двустороння связь). От Card наследуется некий CardRecord, который просто содержит те же поля, что и Card и добавляет одно свое поле. Нужно, чтобы класс CardRecord не подтягивал ссылку на taxPolicy из своего родителя. Можно ли так сделать? Код
|
| Автор: MaxPayneC 3.3.2010, 20:23 |
| Попробуйте объявить метод getTaxPolicy() и пометить его как @Transient. Или поле, если вы расставляли аннотации у полей. |
| Автор: afon 3.3.2010, 20:57 |
| Пробовал, не получается. Самый простой пусть - описать свои идентичные поля у наследника Карты CardRecord-а и не парится Просто хочется сделать в духе хибернейта. |
| Автор: MaxPayneC 3.3.2010, 21:00 |
| Да, пожалуй то что вы написали - единственный возможный вариант, если транзиент не катит :( |
| Автор: garbuz 3.3.2010, 23:30 |
| А LAZY не покатит? |
| Автор: afon 4.3.2010, 01:02 |
| Пардон. Не понял. При чем тут lazy? Это же просто стратегия вытягивание объектов по ссылке 1-* При таком коде, как я показал, хибернейт валится еще на старте при валидации/создании таблиц. Лейзи тут не поможет. Мне нужно что-то вроде @AttributeOverride, только в AttributeOverride можно лишь переименовать поля и их маппинг на колонки. А вот так чтобы исключить колонку из маппинга в принципе, - нельзя. Думал, может кто из уважаемого сообщества знает нужную аннотацию. Прихожу к выводу, что (как минимум в hibernate) так сделать нельзя. |
| Автор: Restavrator 4.3.2010, 02:07 |
А что мешает сделать некий BaseCard в котором будут все поля кроме taxPolicy. Card и CardRecord унаследовать от BaseCard с добавлением соответствующих полей. |
| Автор: afon 4.3.2010, 17:56 |
| Ничего не мешает. Просто не подумал. Спасибо, отличное простое решение :) |