我的IDE使用的语法与我熟悉的hibernate查询不同。我转到HQL文档(http://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/queryhql.html),他们不解释如何派生此查询。它很简单,我必须找到一个语法定义,但我无法找到它。有人可以澄清我吗?
基本的HQL查询如下所示:
SELECT u FROM User u
在SQL中,我会这样写:
SELECT * FROM User;
或
SELECT u.* FROM User AS u;
但是谁需要这种简单查询的额外复杂性。
HQL定义在哪里?
答案 0 :(得分:2)
你必须以不同的方式来思考它,就像对Java对象运行SQL查询一样,因此它是混合性的。您不会在HQL中编写SELECT u From User u
,只需编写from yourPackage.User
即可检索User
类的所有实例,即。所有映射到DB中行的对象。
HQL中的select
子句更多用于访问类实例中的各个属性,例如select u.name from User u
将获得所有name
的列表,这些是Java对象中的属性映射到表格。