Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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 кэша не было. 
Применить другую иерархию в проекте не имею возможность. Можно ли такое сделать на данном виде иерархии и если нет то почему, а если да, то как?)

Заранее благодарен

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)