把on去了,改成: select funds.numberedAccount, funds.amountOfMoney, funds.accountOpenTime, cust.customerId,cust.name from FundsAccount as funds join Customers as cust where funds.numberedAccount='2006' 出错: Exception in thread "main" org.hibernate.hql.ast.QuerySyntaxException: Path expected for join! [select funds.numberedAccount,funds.amountOfMoney,funds.accountOpenTime,cust.customerId,cust.name from com.hibernate.pojo.FundsAccount as funds left join Customers as cust where funds.numberedAccount= '2006'] at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59) at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:225) at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:158) at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109) at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75) at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54) at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71) at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133) at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112) at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583) at com.dao.fundAccountAdmin.FundAccountAdminDao.queryFundAccountByNumberedAccount(FundAccountAdminDao.java:135) at com.dao.fundAccountAdmin.FundAccountAdminDao.main(FundAccountAdminDao.java:230) Caused by: Path expected for join! at org.hibernate.hql.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:307) at org.hibernate.hql.antlr.HqlSqlBaseWalker.joinElement(HqlSqlBaseWalker.java:3268) at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3060) at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2938) at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688) at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544) at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281) at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229) at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:218) ... 10 more
select funds.numberedAccount, funds.amountOfMoney, funds.accountOpenTime, cust.customerId,cust.name from FundsAccount as funds join funds.customers as cust where funds.numberedAccount='2006' 看看
可能查询可以,我的是两个表里得到数据,但不知道怎么来得到查询的值,我是这样写的: session=HibernateSessionFactory.getSession(); Query q=session.createQuery("select funds.numberedAccount,funds.amountOfMoney,funds.accountOpenTime,cust.customerId,cust.name from FundsAccount as funds join funds.customers as cust where funds.numberedAccount= '"+numberedAccount+"'"); List li=q.list(); Iterator it=li.iterator(); Object[] bean =(Object[])it.next(); String numberedAc=(String)bean[0]; Double prise=(Double)bean[1]; Date dateTime=(Date)bean[2]; Integer id=(Integer)bean[3]; String name=(String)bean[4]; list.add(numberedAc); list.add(prise); list.add(dateTime); list.add(id); list.add(name); 报错:Exception in thread "main" java.lang.NullPointerException at com.dao.fundAccountAdmin.FundAccountAdminDao.queryFundAccountByNumberedAccount(FundAccountAdminDao.java:147) at com.dao.fundAccountAdmin.FundAccountAdminDao.main(FundAccountAdminDao.java:246)
问题解决: list没有new,我在下面写上list=new Arraylist();后正确得到结果. 谢谢!! session=HibernateSessionFactory.getSession(); Query q=session.createQuery("select funds.numberedAccount,funds.amountOfMoney,funds.accountOpenTime,cust.customerId,cust.name from FundsAccount as funds join funds.customers as cust where funds.numberedAccount= '"+numberedAccount+"'"); List li=q.list(); Iterator it=li.iterator(); Object[] bean =(Object[])it.next(); String numberedAc=(String)bean[0]; Double prise=(Double)bean[1]; Date dateTime=(Date)bean[2]; Integer id=(Integer)bean[3]; String name=(String)bean[4]; list.add(numberedAc); list.add(prise); list.add(dateTime); list.add(id); list.add(name);
select funds.numberedAccount, funds.amountOfMoney,
funds.accountOpenTime,
cust.customerId,cust.name
from FundsAccount as funds
join Customers as cust
where funds.numberedAccount='2006'
出错:
Exception in thread "main" org.hibernate.hql.ast.QuerySyntaxException: Path expected for join! [select funds.numberedAccount,funds.amountOfMoney,funds.accountOpenTime,cust.customerId,cust.name from com.hibernate.pojo.FundsAccount as funds left join Customers as cust where funds.numberedAccount= '2006']
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:225)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:158)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)
at com.dao.fundAccountAdmin.FundAccountAdminDao.queryFundAccountByNumberedAccount(FundAccountAdminDao.java:135)
at com.dao.fundAccountAdmin.FundAccountAdminDao.main(FundAccountAdminDao.java:230)
Caused by: Path expected for join!
at org.hibernate.hql.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:307)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.joinElement(HqlSqlBaseWalker.java:3268)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3060)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2938)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:218)
... 10 more
funds.accountOpenTime,
cust.customerId,cust.name
from FundsAccount as funds
join funds.customers as cust
where funds.numberedAccount='2006'
看看
session=HibernateSessionFactory.getSession();
Query q=session.createQuery("select funds.numberedAccount,funds.amountOfMoney,funds.accountOpenTime,cust.customerId,cust.name from FundsAccount as funds join funds.customers as cust where funds.numberedAccount= '"+numberedAccount+"'");
List li=q.list();
Iterator it=li.iterator();
Object[] bean =(Object[])it.next();
String numberedAc=(String)bean[0];
Double prise=(Double)bean[1];
Date dateTime=(Date)bean[2];
Integer id=(Integer)bean[3];
String name=(String)bean[4];
list.add(numberedAc);
list.add(prise);
list.add(dateTime);
list.add(id);
list.add(name);
报错:Exception in thread "main" java.lang.NullPointerException
at com.dao.fundAccountAdmin.FundAccountAdminDao.queryFundAccountByNumberedAccount(FundAccountAdminDao.java:147)
at com.dao.fundAccountAdmin.FundAccountAdminDao.main(FundAccountAdminDao.java:246)
list没有new,我在下面写上list=new Arraylist();后正确得到结果.
谢谢!!
session=HibernateSessionFactory.getSession();
Query q=session.createQuery("select funds.numberedAccount,funds.amountOfMoney,funds.accountOpenTime,cust.customerId,cust.name from FundsAccount as funds join funds.customers as cust where funds.numberedAccount= '"+numberedAccount+"'");
List li=q.list();
Iterator it=li.iterator();
Object[] bean =(Object[])it.next();
String numberedAc=(String)bean[0];
Double prise=(Double)bean[1];
Date dateTime=(Date)bean[2];
Integer id=(Integer)bean[3];
String name=(String)bean[4];
list.add(numberedAc);
list.add(prise);
list.add(dateTime);
list.add(id);
list.add(name);