【问题标题】:Ebean: How to use wildcard for field names with RawSqlBuilder?Ebean:如何在 RawSqlBuilder 中使用通配符作为字段名称?
【发布时间】:2015-05-19 15:18:01
【问题描述】:

有示例方法:

private static List<Foo> getFoos() {
    Query<Foo> query = Ebean.find(Foo.class);
    query.setRawSql(
            RawSqlBuilder
                    .parse("SELECT * FROM foo")
                    .create()
    );

    return query.findList();
}

不幸的是它抛出了一个异常:

[PersistenceException: 在 models.Foo 上找不到属性 [*]]

当然,如果我在 SQL 中指定字段,例如:

.parse("SELECT foo, bar, baz FROM foo")

无论如何,我宁愿不手动执行此操作,因为稍后 Ebean 会执行其他查询以获取不在列表中的属性,在这种情况下,如何使用 * 通配符作为模型的字段名称?

【问题讨论】:

    标签: playframework ebean playframework-2.3


    【解决方案1】:

    您可以尝试改用unparsed

    RawSqlBuilder
        .unparsed("SELECT * FROM SomeTable")
        .columnMapping("id", "id")
        .create();
    

    请注意,您需要指定至少一个列映射,否则 Ebean 会抱怨这样的事情

    Query threw SQLException: Column Index out of range, 0 < 1
    

    【讨论】:

    • 几乎......不幸的是,如果给定的列没有被columnMapping("foo", "foo")映射,Ebean 执行自动获取......这将是真正的性能-大数据集上的杀手
    猜你喜欢
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    相关资源
    最近更新 更多