2014-04-10 44 views
5

我很匆忙,所以我只想問一個關於querydsl的快速問題。根據我的研究,查詢dsl不支持存儲過程,但可以支持數據庫功能。我的問題是我們如何使用querydsl調用這些數據庫函數?如何使用querydsl調用mysql函數?

+0

豈不[這篇文章](http://luisfpg.blogspot.be/2013/02/the-beauty-of-querydsl-in-sorting.html)回答你的問題? –

+0

是的,我經歷了很多時間。但基於querydsl的當前版本,它基本沒有過時。 –

+0

我的不好。想想我沒有說什麼然後:-) –

回答

11

您可以在查詢中使用基於TemplateExpression的任意JPQL語法注入。

例如

query.where(Expressions.booleanTemplate("func1({0}, {1})", arg1, arg2)); 

如果你使用Hibernate 4.3或任何其他JPA 2.1兼容的提供者,你可以使用函數語法調用SQL函數https://bugs.eclipse.org/bugs/show_bug.cgi?id=350843

所以例如會變成

query.where(Expressions.booleanTemplate("function('func1', {0}, {1})", arg1, arg2)")); 
+0

哇..多麼巧合蒂莫..我剛纔看到和閱讀幻燈片..你幾乎都在它裏面我需要知道..謝謝..我一定會嘗試你的建議.. –

+0

@Timo我想這個,但我收到:org.hibernate.hql.internal.ast.QuerySyntaxException:意外的AST節點 – renanlf

+0

好的一個。還有可能在一次調用中處理更多的函數(嵌套的內部函數)嗎? – spr