2012-04-13 20 views
0

私は私が参加したクエリHQLはQUERYのJOIN:プロパティを解決できませんでした:

("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]") 

を実行しようとしたとき、私は、共通のIDで一緒に

を顧客と国のテーブルを結合しようとしています、次のエラーを取得しています

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> 

そしてこれは、私はそれですべてについてHQLに新しいので、わからない私は

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

を呼び出すようにしようとしているクエリではまだそう誰もがこの問題を解決する方法を知っていますか?

ありがとうございます。

+0

を試してみてください。 .xmlファイルがどのようにパラメータを処理するのか分かりません。 - dbスキーマは期待どおりに見えますか? –

+0

私は自分のクラスでこれを使用しています。データベースにアクセスして読み書きしているだけです。このJOIN QUERYの作業は問題です。 – newSpringer

+0

DBスキーマは期待通りですか? (Hibernateは正しくDBスキーマを作成しますか?) –

答えて

1

cus.countriesではなくcus.Countriesです。プロパティ名は大文字と小文字を区別します

+0

これを試してみましたが、それはうまくいきませんでした...しかし、それは国として宣言しています。クラスCustomerの – newSpringer

+0

には、おそらくgetCountriesとsetCountriesのようなものがあります。つまり、プロパティは国(小文字)です。これを反映するために、Customer.hbm.xmlを変更する必要があります。 – Pablo

+0

ああ、意味があります。 – newSpringer

0

あなたは休止状態で起動した場合、私はあなたのHibernateのものを構築するために@Entity注釈でJavaクラスを使用することをお勧めし

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

まだ同じエラーはありません – newSpringer

+0

はあなたの変数名 'Countries'ですか? 'cus.Countries.id'を使います –

関連する問題