| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Hibernate: вопрос по second level cache и наследов |
| Автор: slippery 4.4.2012, 01:46 |
| Добрый вечер, есть такая теоретическая иерархия сущностей: @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "user_type", discriminatorType = DiscriminatorType.STRING) @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class User { Long id; } @Entity @SecondaryTable(name ="guest") @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class Guest extends User { @Column(table = "guest") private String name; } @Entity @SecondaryTable(name ="Member") @Cache(usage = CacheConcurrencyStrategy.READ_WRITE,) public class Member extends User { @Column(table = "Member") private String name; } Так вот, кэши не создаются для Guest и для Member. Не создается кэш с именем класса в качестве дефолтового региона, а если регион и кэш прописать в ручную, то они не заполняются данными при выемки через session.get. Вместо это создается 1 кэш для User. И туда будут помещаться как я понял все объекты которые расширяют User. 1.Правильно ли я понимаю(вроде практика подтверждает)? 2.И как мне в такой иерархии сделать так чтоб я могу указывать создавать кэш уже для конкретного потомка к примеру для Member, а чтоб для Guest кэша не было. Применить другую иерархию в проекте не имею возможность. Можно ли такое сделать на данном виде иерархии и если нет то почему, а если да, то как?) Заранее благодарен |