我有以下這在SQL軟件(HeidiSQL)完美運行SQLSQL在玩遊戲!框架
SELECT gl2.documentNumber, gl2.debitAmount, gl2.creditAmount,
gl2.account, gl2.description FROM GeneralLedger AS gl1
LEFT JOIN GeneralLedger AS gl2
ON gl1.documentNumber = gl2.documentNumber
WHERE gl1.account='911' AND gl2.account <> '911';
當將其放置進場!控制器,我用這個:
String queryPL = "SELECT gl2.documentNumber, gl2.debitAmount, gl2.creditAmount, "
+ "gl2.account, gl2.description FROM GeneralLedger AS gl1 "
+ "LEFT JOIN GeneralLedger AS gl2 "
+ "ON gl1.documentNumber = gl2.documentNumber "
+ "WHERE gl1.account='911' AND gl2.account <> '911'";
Query query = JPA.em().createQuery(queryPL);
List<Object[]> profitAndLoss = query.getResultList();
接收的錯誤:
IllegalArgumentException occured : org.hibernate.hql.ast.QuerySyntaxException: unexpected token: ON near line 1, column 156 [SELECT gl2.documentNumber, gl2.debitAmount, gl2.creditAmount, gl2.account, gl2.description FROM models.GeneralLedger AS gl1 LEFT JOIN GeneralLedger AS gl2 ON gl1.documentNumber = gl2.documentNumber WHERE gl1.account='911' AND gl2.account <> '911']
我修改了HQL到
String queryPL = "SELECT gl2.documentNumber, gl2.debitAmount, gl2.creditAmount, "
+ "gl2.account, gl2.description FROM models.GeneralLedger AS gl1 "
+ "LEFT OUTER JOIN models.GeneralLedger AS gl2 "
+ "WITH gl1.documentNumber = gl2.documentNumber "
+ "WHERE gl1.account='911' AND gl2.account <> '911'";
Query query = JPA.em().createQuery(queryPL);
List<Object[]> profitAndLoss = query.getResultList();
,仍然收到錯誤:
IllegalStateException occured : DOT node with no left-hand-side!
所以我該如何解決這個問題?
謝謝。我只是將createQuery修改爲CreateNativeQuery,並在查詢語句中進行了一些小調整(使用HeidiSQL中的原始調整,現在可以工作。 – 2012-04-29 23:44:21