Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 查询语法异常,未映射表名_Hibernate - Fatal编程技术网

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

Hibernate 查询语法异常,未映射表名,hibernate,Hibernate,我正在使用HQL查询,请看下面的代码 实体类: @Entity @Table(name = "COUNTRY") public class Country implements Serializable{ private long countryCode; private String countryName; 道: public List getCountryList(){ 列表结果列表=null; System.out.println(“in-dao”); Query Query=get

我正在使用HQL查询,请看下面的代码

实体类:

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

private long countryCode;
private String countryName;
道:

public List getCountryList(){
列表结果列表=null;
System.out.println(“in-dao”);
Query Query=getSession().createQuery(“来自国家/地区”);
resultList=query.list();
返回结果列表;
}
app context.xml:

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

com.test.in.ergy.entity.Country

可能是什么问题

HQL查询中的实体区分大小写

替换此项:

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

Query query = getSession().createQuery(" from Country ctry ");
参考手册第14.1章摘录:

除了Java类和属性的名称之外,查询 不区分大小写。所以选择和选择是一样的 选择,但org.hibernate.eg.FOO不是org.hibernate.eg.FOO,并且 foo.barSet不是foo.barSet


关于

我将查询从HQL更改为SQL及其工作方式。 问题如下

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

    try {
        SQLQuery query = getSession().createSQLQuery(queryString);
        resultList = query.list();
}

如果您使用createQueryfromQuery类,则Hibernate区分大小写,但与您尝试检索的类名有关…而不是与表有关

比如说

Query=session.createQuery(“从飞机”); 如果类的名称为“飞机”,则将起作用

Query=session.createQuery(“从飞机”);
无论DB中的表名是否为Planet,它都将失败,因为它将查找类,而不是表

我的查询使用的是Country,因为我给出的类名是Country。不知道发生了什么事。。无法修复此问题是否可以检查表名是否全部为大写?实际的mysql表名?是的,hibernate是区分大小写的
String queryString = " select ctry.COUNTRY_CODE, ctry.COUNTRY_NAME from METRICS.COUNTRY ctry ";

    try {
        SQLQuery query = getSession().createSQLQuery(queryString);
        resultList = query.list();
}