Playframework SQL正在发挥作用!框架

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

我有以下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';
当它发挥作用时!控制器,我用这个:

     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();