У меня есть отображение спящего режима, который выглядит следующим образом:Hibernate - Запрос несколько таблиц с одним спящих-отображением
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.lwl.anlei.bl.model.imp">
<class name="PersonFo">
<id name="id" type="integer"/>
<property name="name" type="string"/>
<property name="info" type="string"/>
</class>
<sql-query name="person1">
<return alias="gb" class="PersonFo"/>
SELECT id as {gb.id},
name as {gb.name},
info as {gb.info}
FROM table
WHERE field1 = :param
</sql-query>
<sql-query name="person2">
<return alias="gb" class="PersonFo"/>
SELECT id as {gb.id},
second_name as {gb.name},
whatever as {gb.info}
FROM table
WHERE field2 = :param
</sql-query>
</hibernate-mapping>
Это simplyfied НВМ, что у меня есть. В Java я получаю мои данные таким образом, с «getQueryName»:
List<Person> myPersons =
session.getNamedQuery("person1").setString("param", "important text").list();
Теперь я должен использовать представление, вместо этих querys. Я знаю, я мог бы просто написать «SELECT ххх FROM view_person1» и «SELECT ххх FROM view_person2» в SQL-querys, но я предпочел бы использовать что-то вроде этого:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.lwl.anlei.bl.model.imp">
<class name="PersonFo"
table="view_person1"
entity-name="view_person1" >
<id name="id" column="id" type="integer"/>
<property name="name" column="name" type="string"/>
<property name="info" column="info" type="string"/>
</class>
<class name="PersonFo"
table="view_person2"
entity-name="view_person2" >
<id name="id" column="id" type="integer"/>
<property name="name" column="name" type="string"/>
<property name="info" column="info" type="string"/>
</class>
</hibernate-mapping>
В другом примере, я видел, как таким образом сохранить данные с помощью спящего режима. Map Two Identical tables (same schema...) to same entity in Hibernate
Они просто использовали:
Но, как я запрашиваю данные? Есть что-то вроде:
List<Person> myPersons =
session.getNamedEntity("view_person2").list();
Справка будет очень полезна! Спасибо!
Я буду проверять. Заранее спасибо! – Stix