@Inheritance TABLE_PER_CLASS оценивает странное поведение - PullRequest
0 голосов
/ 25 мая 2011

В моем приложении у меня есть такое отображение

@MappedSuperclass
public abstract class Base implements Serializable {

@Entity
@Table(name = "LevelOne")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class LevelOne extends Base {

@Entity
@Table(name = "LevelTwo")
public class LevelTwo extends LevelOne {

@Entity
@Table(name = "LevelThree")
public class LevelThree extends LevelTwo {

Таблицы создаются в БД, как и ожидалось.Проблема возникает, когда я пытаюсь создать запрос, подобный следующему:

session.getCurrentSession().createCriteria(LevelOne.class, "levelOne"). [..] .list();

Я получаю результаты из всех других таблиц LevelX, а не только из таблицы LevelOne.конечно, если это поведение ожидается или нет, или если в моем отображении есть ошибка, поскольку я не использую абстрактный класс с аннотацией @Inheritance, однако мне нужно будет получить только результаты "LevelOne".Как я мог их достать?

1 Ответ

2 голосов
/ 25 мая 2011

Да, это ожидаемое поведение.Если вам нужно только LevelOne, добавьте ограничение на неявное свойство class:

session.getCurrentSession()
    .createCriteria(LevelOne.class, "levelOne")
    .add(Restrictions.eq("class", LevelOne.class))
    . [..] .list(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...