2008-09-16 4 views
2

Ist es möglich, die einzelnen Spalten von Tabelle2 mit HQL mit einer solchen Konfiguration zu erreichen?HQL Abfragen von Spalten in einem Satz

<hibernate-mapping> 
    <class table="table1"> 
    <set name="table2" table="table2" lazy="true" cascade="all"> 
     <key column="result_id"/> 
     <many-to-many column="group_id"/> 
    </set> 
    </class> 
</hibernate-mapping> 

Antwort

1

Sie sind nur Eigenschaften der table2-Eigenschaft von table1.

select t1.table2.property1, t1.table2.property2, ... from table1 as t1 

Sie könnten, wie beitreten haben so

select t2.property1, t2.property2, ... 
    from table1 as t1 
    inner join t1.table2 as t2 

Hier ist der relevante Teil des hibernate doc.

1

Sie können nach ihnen fragen, aber Sie können es nicht Teil der Where-Klausel machen. Z. B.

wählen t1.table2.x von table1 als t1

funktionieren würde, aber

select t1 von table1 als t1, wo t1.table2.x = foo

würde nicht.

0

Nehmen wir an, Tabelle2 hat eine Spalte "color varchar(128)" und diese Spalte ist richtig auf Hibernate gemappt.

sollten Sie in der Lage sein, so etwas zu tun:

from table1 where table2.color = 'red' 

Dadurch werden alle table1 Zeilen zurück, die zu einer table2 Zeile, deren color Spalte ‚rot‘ verbunden sind. Beachten Sie, dass Ihr set in Ihrem Hibernate-Mapping den gleichen Namen wie die Tabelle hat, auf die es verweist. Die obige Abfrage verwendet den Namen der , nicht den Namen der Tabelle.