查询语法异常,表名未映射

时间:2013-10-10 13:06:44

标签: hibernate

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

实体类:

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

private long countryCode;
private String countryName;

DAO:

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

app context.xml:

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

可能是什么问题

3 个答案:

答案 0 :(得分:2)

如果您使用查询类中的 createQuery ,则Hibernate区分大小写,但关于您尝试检索的类名...而不是表

例如

查询query = session.createQuery(&#34;来自Airplane&#34;); 如果班级名称是&#34;飞机&#34;

,将会有效

查询query = session.createQuery(&#34;来自AIRPLANE&#34;); 如果DB中的表名是AIRPLANE,它将失败,因为它将查找类,而不是表

答案 1 :(得分: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

此致

答案 2 :(得分: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();
}