просмотр в спящем режиме - PullRequest
8 голосов
/ 25 февраля 2011

Как отобразить представление с несколькими объектами, используя Hibernate?

С уважением, chaitu

Ответы [ 3 ]

8 голосов
/ 25 февраля 2011

См. Раздел 5.1.3 «Класс» в документации по Hibernate, прямо перед разделом «Id»:

Нет разницы между представлением и базовой таблицей для отображения Hibernate,Это прозрачно на уровне базы данных, хотя некоторые СУБД не поддерживают представления должным образом, особенно с обновлениями.Иногда вы хотите использовать представление, но не можете создать его в базе данных (т.е. с устаревшей схемой).

http://docs.jboss.org/hibernate/core/3.5/reference/en/html/mapping.html#mapping-declaration-class

Есть также пример того, как сделать это с помощью XML.

6 голосов
/ 12 декабря 2012

Подвыбор - ваш естественный выбор. Вот рабочий пример: скажем, у нас есть представление с именем "view1" в СУБД.Вам больше ничего не нужно, хотя, если представление не обновляется, использование @Immutable было бы хорошо для проблем с производительностью.Обратите внимание, что у вас должен быть столбец идентификатора в вашем классе и в представлении

@Entity
@Subselect("select * from view1")
public class EventView {
    @Id @GeneratedValue
    private int id;
4 голосов
/ 28 октября 2011

вы можете использовать аннотацию @subselect

вот пример официальной документации:

@Entity
@Subselect("select item.name, max(bid.amount), count(*) "
    + "from item "
    + "join bid on bid.item_id = item.id "
    + "group by item.name")
@Synchronize( {"item", "bid"} ) //tables impacted
public class Summary {
    @Id
    public String getId() { return id; }
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...