2012-06-04 51 views
0

我想Teradata的13.10之間建立友誼,並使用ORM ebean發揮層2框架。我的應用程序並嘗試查詢DB:ebean在玩2框架與SQL方言

select t0.workflow_id c0, t0.CHNL_TYPE_CD c1, t0.WORKFLOW_NAME c2, t0.INFO_SYSTEM_TYPE_CD c3, t0.FOLDER_NAME c4 from ETL_WORKFLOW t0 order by name limit 11 

問題是...是的Teradata確實一無所知LIMIT是否有可能找到執行/清除的東西,使ORM工作基本和Teradata?

UPD: 好像我必須做些什麼與TESE類: http://www.avaje.org/static/javadoc/pub/index.html 我在尋找樣本: 1.設置正確的SQL方言ebean或使其在SQL ANSI模式下工作。 2.覆蓋ebean的類並編寫自己的LIMIT功能實現。

+0

您是否嘗試過使用SELECT TOP 11? –

+0

我使用這樣的結構:返回find.orderBy(sortBy + 「」 +順序) \t \t \t .findPagingList(pageSize的) \t \t \t .getPage(頁); 它確實生成了一個問題中提到的查詢。我正在尋找一種方法來阻止EBEAN使用「特殊」LIMIT並使用更一般的方法。 – Sergey

+0

獲取最新版本的ebean.jar現在它的2.7.7 http://sourceforge.net/projects/ebeanorm/files/ –

回答

0

Teradata支持您的SELECT語句中的TOP n運算符和SAMPLE子句。 TOP n是一個擴展ANSI SQL 2008標準是最接近相當於LIMIT n操作,你所期待的。

TOP n將在您的SELECT聲明中的所有其他條款都得到滿足後處理。它是使用窗口聚合的QUALIFY ROW_NUMBER()QUALIFY RANK()來完成同樣的任務,在最差的情況下提供窗口聚合函數的等效性能。

SAMPLE通過允許您返回多個樣本集的單個結果內提供你一些額外的靈活性。它也可以用於結果集中的簡單隨機樣本。鑑於SAMPLE提供的選項,最好參考Teradata的SQL數據操縱語言手冊瞭解所有詳細信息。 Teradata手冊可從here下載。只需選擇您希望下載該手冊的Teradata版本。

編輯: 使用RawSQL功能與Ebean您可以使用任一SAMPLETOP n運營商在你的SQL明確,不允許Ebean添加表達式,如自動限價抵消條款。你有沒有嘗試過這種方法呢?

+0

感謝您的回覆Rob。似乎我沒有正確解釋我需要什麼。現在我用JPA + TeradataDialect使用play2。我希望找到一種方法來使用Teradata方言/ ANSI支持來實現ebean ORM實現。現在它不能用於開箱即用。默認情況下,ebean會生成對Teradata DB無效的SQL查詢。 – Sergey