0
查詢多個表我有一個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 HBM。 在Java中,我得到我的數據,這樣一來,與「getQueryName」:
List<Person> myPersons =
session.getNamedQuery("person1").setString("param", "important text").list();
現在,我必須使用視圖,而不是這些querys。我知道,我可以簡單地寫「SELECT XXX FROM view_person1」和「SELECT XXX 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();
幫助將非常appriciated! 謝謝!
我會測試。提前致謝! – Stix 2014-10-02 07:21:04