我正在使用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>
可能是什么问题
答案 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();
}