2014-10-01 8 views
0

와 쿼리 여러 테이블 나는이처럼 보이는 최대 절전 모드 매핑이 수행최대 절전 모드 일 최대 절전 모드 매핑

<?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입니다. 자바에서 는 내가 "getQueryName"와, 이런 식으로 내 데이터를 얻고있다 :

List<Person> myPersons = 
    session.getNamedQuery("person1").setString("param", "important text").list(); 

는 지금은보기를 사용할 필요가 대신이 querys의. 나는 단순히 "view_person1 FROM XXX를 SELECT"및 SQL - querys에 "view_person2 FROM XXX SELECT"쓸 수 알지만,이 같은 것을 사용하는 것을 선호 : 또 다른 예에서

<?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> 

을 나는 방법을 살펴 보았다 이렇게하면 최대 절전 모드로 데이터를 저장할 수 있습니다.

_session.Save("view_person1", xxxx) 
_session.Save("view_person2", xxxx) 

을하지만, 어떻게 데이터를 쿼리 않습니다 Map Two Identical tables (same schema...) to same entity in Hibernate

그들은 단순히 사용? 다음과 같은 것이 있습니까 :

List<Person> myPersons = 
    session.getNamedEntity("view_person2").list(); 

도움말이 매우 유용 할 것입니다. 감사합니다. 아래와 같이 명명 된 개체를

<class name="PersonFo" 
    table="view_person1" 
    entity-name="view_person1" polymorphism="explicit" > 
    <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> 

및 쿼리 :

답변

1

사용 polymorphism="explicit"은 명명 된 개체를 구별하기

List list1 = session.createQuery("from view_person1").list(); 
List list2 = session.createQuery("from view_person2").list(); 
+0

나는 거 테스트하는 것이 야. 미리 감사드립니다! – Stix