gpt4 book ai didi

java.lang.IllegalStateException : No data type for node AggregateNode: 'MAX' 错误

转载 作者:行者123 更新时间:2023-11-29 02:49:46 24 4
gpt4 key购买 nike

我正在尝试从 mysql 表 Transfer 中获取具有最大日期值的行

她就是道

    public static Transfer getTransferByID(int id){

Session session = HibernateUtil.getSessionFactory().openSession();
Transaction T = null;
Query Q = null;
Transfer Result = null;
Date D = null;

try {
T = session.beginTransaction();
String query1 = "SELECT MAX(TDate) FROM Transfer WHERE EmpID=:id GROUP BY EmpID";
Q = session.createQuery(query1);
Q.setInteger("id", id);
D = (Date) Q.uniqueResult();
String query2 = "FROM Transfer WHERE EmpID=:id AND TDate=:dt";
Q = session.createQuery(query2);
Q.setInteger("id", id);
Q.setDate("dt", D);
Result = (Transfer) Q.uniqueResult();
T.commit();
return Result;

} catch (HibernateException e) {
if (T != null) T.rollback();
return null;

} catch (NullPointerException e) {
if (T != null) T.rollback();
return null;

} finally {
session.close();
}
}

我正在使用 java.sql.date但是当我执行时我得到了这个

    Caused by: java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.AggregateNode 
\-[AGGREGATE] AggregateNode: 'MAX'
\-[IDENT] IdentNode: 'TDate' {originalText=TDate}
at org.hibernate.hql.internal.ast.tree.SelectClause.initializeExplicitSelectClause(SelectClause.java:174)

我的 HQL 有什么问题

请帮忙

最佳答案

请尝试以下带别名的 HQL 查询:

public static Transfer getTransferByID(int id){

Session session = HibernateUtil.getSessionFactory().openSession();
Transaction T = null;
Query Q = null;
Transfer Result = null;
Date D = null;

try {
T = session.beginTransaction();
String query1 = "SELECT MAX(transfer.TDate) FROM Transfer transfer WHERE transfer.EmpID=:id GROUP BY transfer.EmpID";
Q = session.createQuery(query1);
Q.setInteger("id", id);
D = (Date) Q.uniqueResult();
String query2 = "FROM Transfer transfer WHERE transfer.EmpID=:id AND transfer.TDate=:dt";
Q = session.createQuery(query2);
Q.setInteger("id", id);
Q.setDate("dt", D);
Result = (Transfer) Q.uniqueResult();
T.commit();
return Result;

} catch (HibernateException e) {
if (T != null) T.rollback();
return null;

} catch (NullPointerException e) {
if (T != null) T.rollback();
return null;

} finally {
session.close();
}
}

关于java.lang.IllegalStateException : No data type for node AggregateNode: 'MAX' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37368869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com