2012-04-13 3 views
0

Ich erhalte die folgende Fehlermeldung, wenn ich versuche, eine AbfrageHQL JOIN QUERY: konnte nicht Eigentum beheben:

("could not resolve property: Countries of: com.fexco.helloworld.web.model.Customer [select cus from com.fexco.helloworld.web.model.Customer as cus join cus.Countries as cou where cus.id = cou.id]") 

ich die Kunden und Länder Tabellen zusammen

durch eine gemeinsame ID zu verbinden versuchen Join auszuführen

Customer.hbm.xml

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping package="com.ccg.db.test"> 
<class name="Customer" table="Customer"> 
    <id name="id" column="id" type="bigiint"> 
     <generator class="native"/> 
    </id> 
    <property name="firstname" type="string" > 
     <column name="firstname" /> 
    </property> 
    <property name="surname" type="string" > 
     <column name="surname" /> 
    </property> 
    <property name="address1" type="string" > 
     <column name="address1" /> 
    </property> 
    <property name="address2" type="string" > 
     <column name="address2" /> 
    </property> 
    <many-to-one name="Countries" column="id" class="Countries" /> 
</class> 
</hibernate-mapping> 

Countries.hbm.xml

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping package="com.ccg.db.test"> 
<!-- CLASS NAME MIGHT BE CUSTOMER --> 
<class name="Countries" table="Countries"> 
    <id name="id" column="id"> 
     <generator class="native" /> 
    </id> 
    <property name="country" column="country" /> 
</class> 
</hibernate-mapping> 

Und das ist die Abfrage, die i

String sql_query = "select cus from Customer as cus join cus.Countries as cou where cus.id = cou.id"; 

Ich bin neu in HQL so nicht sicher, alles zu nennen bin versucht, mit ihm noch so weiß jemand, wie diese zu lösen?

Dank

+0

Wenn Sie mit Hibernate beginne ich empfehlen die Verwendung von Java-Klassen mit @Entity Anmerkungen Ihre Hibernate Sachen zu bauen. Ich weiß nicht, wie die XML-Dateien mit den Parametern umgehen. - Sieht das Datenbankschema so aus, wie Sie es erwarten? –

+0

Ich benutze das in meinen Klassen, ich habe es auf die Datenbank zugreifen, lesen und schreiben und all das, nur versuchen, diese JOIN QUERY arbeiten ist das Problem – newSpringer

+0

sieht das DB-Schema aus wie Sie es erwarten? (schafft Hibernate korrekt ein DB-Schema?) –

Antwort

1

Es ist cus.countries, nicht cus.Countries. Eigenschaftsnamen sind Groß- und Kleinschreibung.

+0

probierte das aus und es hat nicht funktioniert ... aber ich habe es als Länder deklariert, also sollte es nicht wichtig sein sollte es? – newSpringer

+0

in der Klasse Customer, haben Sie wahrscheinlich so etwas wie getCountries und setCountries. Das bedeutet, dass das Eigentum Länder (mit Kleinbuchstaben) ist. Sie sollten Customer.hbm.xml ändern, um dies zu berücksichtigen. – Pablo

+0

ah ya, das macht Sinn :) – newSpringer

0

versuchen

select cus from Customer cus where cus.id = cus.countries.id 
+0

nein immer noch der gleiche Fehler – newSpringer

+0

ist Ihr variabler Name 'Countries'? dann benutze 'cus.Countries.id' –