2015-05-19 46 views
2

有樣品的方法:Ebean:如何在RawSqlBuilder中使用通配符作爲字段名稱?

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執行額外的查詢來獲取不在列表中的屬性,在這種情況下,我怎樣才能使用*通配符模型的字段名?

回答

1

你可以嘗試使用unparsed代替

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

請注意,您必須至少指定一個列映射,或者Ebean將與一些抱怨這樣

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

幾乎...不幸的是它如果給定的列未被'columnMapping(「foo」,「foo」)映射,那麼最終不能解決問題。Ebean執行自動獲取......這對於大型數據集是真正的性能殺手。 – biesior

相關問題