jpa2 hibernate использует существующую сущность для загрузки данных из представления - PullRequest
1 голос
/ 25 октября 2011

В моем приложении JPA2 / Hibernate у меня есть таблица USERS и соответствующая сущность User + DAO.

Теперь я создал представление V_USERS, которое содержит отфильтрованные данные из таблицы USERS.

Могу ли я повторно использовать сущность Пользователь для запроса данных из этого представления?

1 Ответ

1 голос
/ 25 октября 2011

Нет, ты не можешь.Вы можете отобразить два разных класса в одну и ту же таблицу, но не наоборот.

Причина этого ограничения проста: откуда поставщик JPA узнает, какую таблицу вы имеете в виду в следующем запросе:

em.createQuery("SELECT u FROM User u");

Однако вы можете захотеть создать базовый класс AbstractUser со всеми свойствами и должны очистить подклассы: User и, например, VUser.Последние два класса будут отображаться в разные таблицы / представления.См. MappedSuperclass и пример там.

@MappedSuperclass
public abstract class AbstractUser {
    //all your columns/JPA mapping go here
}

@Entity
@Table(name="USERS")
public class User extends AbstractUser {}

@Entity
@Table(name="V_USERS")
public class VUser extends AbstractUser {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...