【问题标题】:How to use raw SQL query to find entity in Moqui?如何使用原始 SQL 查询在 Moqui 中查找实体?
【发布时间】:2020-06-05 14:49:48
【问题描述】:

我认为通过 view-entity 从 MySQL 中查找实体数据是非常好的方法。但是在这里,我在某些情况下需要使用来自 MySQL 数据库的非常复杂的查询,比如 max 函数和 group byorder by 标准。有什么办法可以在 Moqui 中使用复杂查询?

【问题讨论】:

    标签: java mysql erp moqui


    【解决方案1】:

    确实,您可以使用 View Entities 实现相当复杂的查询。查看entity-definition-2.1.xsd 文件以获取更多详细信息。您可以将聚合函数与<alias function="... 一起使用,并且将自动生成 GROUP BY 子句。也支持<order-by> 元素。

    此外,您可以通过嵌套<complex-alias> 元素来利用任何SQL 函数和复杂表达式。请记住,您可以使用 <member-entity join-from-alias="... 创建 INNER JOIN 实体组合,并使用 <member-entity join-from-alias="..." join-optional="true" 创建 OUTER JOIN。

    尽可能坚持 SQL 标准,以保持视图实体独立于数据库引擎。

    【讨论】:

      【解决方案2】:

      使用脚本标签,您可以在其中通过ExecutionContext getEntitygetConnection 获得与数据库的连接。

      ExecutionContext ec = context.ec
      Connection con = ec.getEntity().getConnection(groupName)
      def statement = con.createStatement()
      def queryResult = statement.executeQuery(query)
      

      然后只需按照java.sql 文档中的说明处理结果,并将其设置为先前定义的字段标记。

      【讨论】:

      • 这只是创建数据库连接和执行查询的一般概念。但我正在寻找类似 Moqui 框架是否有自己的方式来执行原始 sql 查询。
      • 好吧,如果你得到了连接,你应该能够运行一个原始的 sql 查询
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-02
      • 2015-06-16
      • 2014-12-10
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      相关资源
      最近更新 更多