2014-04-10 14 views
5

Trochę się spieszę, więc chcę tylko zadać szybkie pytanie o querydsl. Według moich badań zapytanie dsl nie obsługuje procedury przechowywanej, ale może obsługiwać funkcje bazy danych. Moje pytanie brzmi: jak wywołać funkcje bazy danych za pomocą zapytaniadslsl?Jak wywołać funkcję mysql za pomocą zapytaniadsds?

+0

Czy nie [ ten artykuł] (http://luisfpg.blogspot.be/2013/02/the-beauty-of-querydsl-in-sorting.html) odpowiedzieć na twoje pytanie? –

+0

Tak, przeszedłem przez to dużo czasu. Ale jest trochę przestarzały w oparciu o aktualną wersję querydsl. –

+0

Mój zły. Zastanówcie się, że nic nie powiedziałem :-) –

Odpowiedz

11

Możesz użyć zastrzyków opartych na TemplateExpression o arbitralnej składni JPQL do zapytania.

np.

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

Jeśli używasz Hibernate 4.3 lub jakikolwiek inny dostawca JPA 2.1 zgodny można użyć składni FUNCTION wywoływać funkcje SQL https://bugs.eclipse.org/bugs/show_bug.cgi?id=350843

Więc Przykładem może przekształcić się

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

Wow .. co za zbieg czasu ... właśnie zobaczyłem i przeczytałem slajd .. masz prawie wszystko w nim muszę wiedzieć .. dziękuję .. i zdecydowanie spróbuję twojej sugestii .. –

+0

@Timo Próbuję tego, ale otrzymuję: org.hibernate.hql.internal.ast.QuerySyntaxException: nieoczekiwany węzeł AST – renanlf

+0

Niezły. A także czy możliwe jest obsłużenie większej liczby funkcji (zagnieżdżonych funkcji wewnętrznych) w jednym wywołaniu? – spr

Powiązane problemy