0

我正在使用 HQL 查询,请参阅下面的代码。

实体类:

@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;
}

应用上下文.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("from Airplane"); 如果类的名称是“飞机”,则将起作用

查询 query = session.createQuery("from AIRPLANE"); 不管 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 和 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 回答