java - 如何使用net.java.ao.Query查询问题?

标签 java postgresql

我在 PostgreSQL 中有这个选择:

SELECT "field_1", "field_2","field_3", MIN(COALESCE(NULLIF("field_4",'') ,'TBD')) MINDP,MIN("field_5") MINBOD FROM "MY_TABLE" GROUP BY "field_1", "field_2","field_3"

我想使用 net.java.ao.Query 来查询我的数据库。我的功能:

import net.java.ao.Query;

    public List<myClass> find() {

        String SQL = "SELECT \"field_1\", \"field_2\",\"field_3\", MIN(COALESCE(NULLIF(\"field_4\",'') ,'TBD')) MINDP,MIN(\"field_5\") MINBOD FROM \"MY_TABLE\" GROUP BY \"field_1\", \"field_2\",\"field_3\""

        return newArrayList(ao.find(myClass.class, Query.select(SQL)));

    }

问题是:此代码返回我表的所有问题。

当我在 postgreSQL 控制台中运行此 SQL 时,它工作正常。

我的代码与 SQL 控制台的结果不同。

有人知道为什么会这样吗?

最佳答案

  • 老问题,但如果有人跨过这个 -

Query.select() 并不意味着将纯 SQL 放入。它更像是一个创建“数据库独立”查询的构建器。在此处查看一些示例:Finding entities

public MyEntity[] findMyEntities(String fieldValue) {
    final Query query = Query.select()
            .where("FIELD_VALUE = ?", fieldValue);
    // evaluates to something like this
    // SELECT * FROM MY_ENTITY WHERE FIELD_VALUE = x;
    return ao.find(MyEntity.class, query);
}

这就是为什么有另一种方法(您在评论中使用过)可以处理纯 SQL (findWithSQL)。

注意 Queryfind() 通常不会按预期工作,因此您可能无法使用查询构建器使原始查询正常工作。

关于java - 如何使用net.java.ao.Query查询问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32738829/

相关文章:

java - 使用 Mapstruct 将 Collection 映射到 Map,反之亦然

java - 在 servlet 之间共享上传的文件

sql - 修改 Postgres JSON 字段中符合条件的所有字段

javascript - 数据正在发送到我的数据库而无需发出请求

postgresql - 根据字段生成序列

java - 当 mysql 连接器位于同一项目中时,如何从命令行运行连接数据库的 Java 程序?

java - 从另一个 JPanel 中重新绘制一个 JPanel

postgresql - 连接两个表、两列,同时将多行显示为一行

postgresql - 为选择中的每一行调用一个函数 - Postgres

Java : Json with duplicate keys to map using Jackson