Playframework SQL正在发挥作用!框架
我有以下SQL,它们在SQL软件(HeidiSQL)中完美运行Playframework SQL正在发挥作用!框架,playframework,hql,Playframework,Hql,我有以下SQL,它们在SQL软件(HeidiSQL)中完美运行 选择gl2.documentNumber、gl2.debitAmount、gl2.creditAmount、, gl2.account,gl2.GeneralEdge中的描述为gl1 左连接GeneralEdge为gl2 在gl1.documentNumber=gl2.documentNumber上 其中gl1.account='911'和gl2.account'911'; 当它发挥作用时!控制器,我用这个: Strin
选择gl2.documentNumber、gl2.debitAmount、gl2.creditAmount、,
gl2.account,gl2.GeneralEdge中的描述为gl1
左连接GeneralEdge为gl2
在gl1.documentNumber=gl2.documentNumber上
其中gl1.account='911'和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();
String queryPL=“选择gl2.documentNumber、gl2.debitAmount、gl2.creditAmount,”
+“gl2.account,gl2.description作为gl1来自GeneralEdge”
+“将GeneralEdge作为gl2左联接”
+“在gl1.documentNumber=gl2.documentNumber上”
+“其中gl1.account='911'和gl2.account'911'”;
Query Query=JPA.em().createQuery(queryPL);
List profitAndLoss=query.getResultList();
和接收到的错误:
发生IllegalArgumentException:
org.hibernate.hql.ast.QuerySyntaxException:意外标记:在附近
第1行第156列[选择gl2.documentNumber,gl2.debitAmount,
gl2.creditAmount,gl2.account,gl2.description FROM
models.GeneralLedger作为gl1左连接GeneralLedger作为gl2打开
gl1.documentNumber=gl2.documentNumber,其中gl1.account='911'和
gl2.账户“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();
String queryPL=“选择gl2.documentNumber、gl2.debitAmount、gl2.creditAmount,”
+gl2.account,gl2.description FROM models.GeneralLedger AS gl1
+“左外部联接模型。GeneralEdge为gl2”
+“使用gl1.documentNumber=gl2.documentNumber”
+“其中gl1.account='911'和gl2.account'911'”;
Query Query=JPA.em().createQuery(queryPL);
List profitAndLoss=query.getResultList();
但仍然收到一个错误:
发生非法状态异常:点节点没有左侧
那么如何解决这个问题呢?为了能够在HQL中的两个实体之间建立连接,您需要在这两个实体之间建立关联。在任何情况下,都不能像在SQL中那样在两个不相关的实体之间进行连接。HQL及其连接功能在中有详细描述
如果确实需要这种类型的联接,请使用本机查询。谢谢。我刚刚将createQuery修改为CreateNativeQuery,并对查询语句进行了一些小的调整(使用HeidiSQL中的原始语句,现在可以开始工作了)。
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();