首页 > 解决方案 > SQLException:Play Framework 中 Ebean 和 rawSql 的列索引超出范围

问题描述

所以在找了一天之后,我仍然不明白我在这里做错了什么。我想在服务器的表实验室中选择列名,其中包含 6 列,但我不断收到错误消息:“SQLException:列索引超出范围:0,列数:1”。有人熟悉吗?谢谢 这是我的代码:

    String sql = "SELECT name FROM Laboratory";
    RawSql rawSql = RawSqlBuilder
            .parse(sql)
            .create();
    Query<Laboratory> query = Ebean.find(Laboratory.class);
    query.setRawSql(rawSql).where();
    List<Laboratory> results = query.findList();

    results.sort(Comparator.comparing(Laboratory::getName)); // Sort by alphabetical order
    try {
        String json = JsonHelper.toJSON(results);
        return ok(json).as("application/json");
    } catch (JsonProcessingException e) {
        LOG.error("Unable to serialize sql request", e);
        return internalServerError();
    }

标签: javaplayframeworkebean

解决方案


好的,我找到了解决方案。事实证明,除了名称之外,我只需要获取 id,否则 Ebean 会丢失。最后这里是有效的 sql 请求:

String sql = "SELECT id, name FROM Laboratory";

推荐阅读