0

私はHQLクエリを使用しています.plsは以下のコードを参照してください。

エンティティ クラス:

@Entity
@Table(name = "COUNTRY")
public class Country implements Serializable{

private long countryCode;
private String countryName;

ダオ:

public List<Country> getCountryList(){
    List<Country> resultList = null;
    System.out.println("in dao");
    Query query = getSession().createQuery(" from country ctry ");
    resultList =  query.list();


    return resultList;
}

アプリ context.xml:

<beans:property name="annotatedClasses">
  <beans:list>
      <beans:value>com.test.in.ergy.entity.Country</beans:value>
  </beans:list>
</beans:property>

何が問題なのですか

4

3 に答える 3

2

QueryクラスからcreateQueryを使用する場合、Hibernate は大文字と小文字を区別しますが、取得しようとしているクラス名に関しては...テーブルではありません

例えば

クエリ query = session.createQuery("飛行機から"); クラスの名前が「飛行機」の場合に機能します

クエリ query = session.createQuery("飛行機から"); DB のテーブル名が AIRPLANE であっても、テーブルではなくクラスを検索するため、失敗します。

于 2014-04-24T21:20:58.977 に答える
0

HQL クエリのエンティティは、大文字と小文字が区別されます。

これを置き換えます:

Query query = getSession().createQuery(" from country ctry ");

このため:

Query query = getSession().createQuery(" from Country ctry ");

リファレンス マニュアルの 14.1 章からの抜粋:

Java クラスとプロパティの名前を除いて、クエリでは大文字と小文字が区別されません。したがって、SeLeCT は sELect と同じですが、org.hibernate.eg.FOO は org.hibernate.eg.Foo ではなく、foo.barSet は foo.BARSET ではありません。

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html

よろしく

于 2013-10-10T14:00:44.950 に答える
0

クエリを HQL から SQL に変更し、その動作を確認しました。クエリは以下に続きます..

String queryString = " select ctry.COUNTRY_CODE, ctry.COUNTRY_NAME from METRICS.COUNTRY ctry ";

    try {
        SQLQuery query = getSession().createSQLQuery(queryString);
        resultList = query.list();
}
于 2013-10-11T05:59:41.507 に答える