java如何修复HQL查询中的“意外令牌”错误
我正在尝试执行以下SQL语句:
select reimb_id, first_name, last_name, amount, type_id, description,
submitted, status_id, resolved
from ers.reimbursement
left join ers.users on author=user_id
order by status_id
limit 20;
在HQL中。这是我的尝试:
String hql = "Select reimb_id, firstname, lastname, amount, type_id, " +
"description, submit_date, status_id, resolve_date " +
"from Reimb " +
"join Reimb.Users as data " +
"order by data.status_id desc";
Query q = session.createQuery(hql).setMaxResults(20);
然而,当我点击这个HQL语句时,我得到了以下异常:
org.hibernate.QueryException: Unable to resolve path [data.status_id], unexpected token [data] [Select reimb_id, firstname, lastname, amount, type_id, description, submit_date, status_id, resolve_date from com.ers.pojos.Reimb join Reimb.Users as data order by data.status_id desc]
如果删除数据表达式,会出现以下异常:
java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.IdentNode +-[IDENT] IdentNode: 'firstname' {originalText=firstname}
我一直在用这个来尝试修复它,但没有用:https://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/queryhql.html
以下是我的相关Java类和变量(至少是相关的)
我的Reimb Java类:
@Entity
@Table(name = "reimbursement", schema = "ers")
public class Reimb {
@Id
@Column(name = "reimb_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int reimb_id;
@Column(name = "amount")
private double amount;
@Column(name = "submitted")
private Timestamp submit_date;
@Column(name = "resolved")
private Timestamp resolve_date;
@Column(name = "description")
private String description;
@Column(name = "status_id")
private int status_id;
@Column(name = "type_id")
private int type_id;
我的用户java类:
@Entity
@Table(name="users", schema = "ers")
public class Users {
@Column(name = "FIRST_NAME")
private String firstname;
@Column(name = "LAST_NAME")
private String lastname;
共 (0) 个答案