【问题标题】:java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException MS-Sql Serverjava.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException MS-Sql 服务器
【发布时间】:2017-04-01 23:43:41
【问题描述】:

我正在使用休眠从 ms-sql 服务器数据库中获取数据。我正在使用以下查询从表中检索数据:

"select tw.datestr, Round (tw.s1n301Kwh,0)  
from Tower_3_EB_kwh tw 
order by tw.datestr DESC"

但是我收到了这个错误:

java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: Tower_3_EB_kwh 未映射 [select tw.datestr, Round (tw.s1n301Kwh,0) from Tower_3_EB_kwh tw order by tw .datestr DESC]

我正在使用休眠代码从表中获取数据:

String queryString = "select tw.datestr, Round (tw."+columnName.toLowerCase()+"Kwh"+",0)  
   from "+"Tower_"+blockName.substring(blockName.length() - 1)+"_EB_kwh tw 
   order by tw.datestr DESC";

Query query = entityManager.createQuery(queryString);           
List< "?" >  list = query.setMaxResults(1).getResultList()

任何人都可以解释查询中的问题,以便我无法从数据库中获取数据。

【问题讨论】:

标签: java sql-server hibernate jpa


【解决方案1】:

你有几个基本问​​题:

(1) 未定义休眠映射。 Hibernate 是一个 ORM(Object to Relational tables Mapping)框架,您需要在其中明确指定哪个 Java Class(称为Entity class)映射到哪个 Relational table(如Tower_3_EB_kwh)。可以使用注释(首选此)或 xml 文件来完成映射。您可以查看here 的简单示例。

(2) 完成映射后,您可以使用 HQL(Hibernate 查询语言,类似于 SQL 的语法,但使用 java 对象/元素名称而不是表名称和列名称)来运行基本的数据库查询。但是,如果你想运行需要原生数据库函数的高级 SQL 查询(比如你的 ROUND),你需要使用createSQLQuery("sql");,你可以查看here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多