我正在使用hibernate从ms-sql server数据库获取数据。我使用下面的查询从表中检索数据:
"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]
我正在使用hibernate代码从表中获取数据:
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()
任何人都可以解释查询中的问题,以便我无法从数据库中获取数据。
答案 0 :(得分:0)
你几乎没有什么根本问题:
(1)未定义Hibernate映射。 Hibernate是一个ORM(对象到关系表映射)框架,您需要在其中明确指定哪个Java类(称为Entity
类)映射到哪个Relational表(如Tower_3_EB_kwh
)。可以使用Annotations(首选)或xml文件来完成映射。您可以查看here以获取一个简单示例。
(2)完成映射后,您可以使用HQL(Hibernate查询语言,它是SQL语法,但使用java对象/元素名称而不是表名和列名)来运行基本数据库查询。但是,如果要运行需要本机数据库功能的高级SQL查询(如ROUND),则需要使用createSQLQuery("sql");
,您可以查看here