A nebolo by jednoduchšie nechať Hibernate vyskladať ten query, potom z neho nechať vygenerovať SQL príkaz a ten príkaz "ručne" obaliť SQL volaním tej funkcie?

Získanie SQL z HQL je možné pomocou QuerySplitter, alebo cez QueryTranslator:

String s = QuerySplitter.concreteQueries(...).getSettings().getQueryTranslatorFactory().createQueryTranslator(...).compile(...).getSQLString()

alebo

String s = new QueryTranslatorImpl(...).compile(...).getSQLString

a výsledný String obaliť volaním tej funkcie - SELECT CREATE_CSV(s) FROM DUAL.

Rastislav "Bedo" Siekel


Ing. Rastislav Siekel
Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia
E-mail : <[EMAIL PROTECTED]>
Tel : 041/562 54 91
Fax : 041/562 54 97
Mobil : 0905 34 00 20


Robert Vojta wrote:
2008/10/15 Tomas Vojtech <[EMAIL PROTECTED]>:

Ahoj,

  
do dialectu lze zaregistrovat dodatecnou fci. Staci se podivat treba do
SQLServerDialect.
    

to samozřejmě lze, ale já potřebuji něco jiného. Jak zaregistrovat
funkci, jak ji zavolat, to všechno vím. Ale já potřebuji donutit
Hibernate, aby výslednou nativní query Oracle obalil funkcí, něco jako
...

 z: SELECT * FROM ...
 do: SELECT CREATE_CSV("SELECT * FROM ...") FROM DUAL

... tak, aby si funkce Oraclu sama spustila dotaz, vzala data,
vytvořila CSV a vrátila ho zpět. Stále platí, že tu query není možné
vytvořit ručně z důvodu obrovské složitosti a času (odpadá použití
named query). Pokud to nepůjde, tak nic jiného nezbyde, ale jako
dočasné řešení bych chtěl Hibernate nějak donutit, aby tu výslednou
query ještě transformoval a až potom odeslal.

  

Odpovedet emailem