Newsgroup: it.comp.java
Titolo: chiarimento su hibernate

Ciao a tutti,
avrei un paio di cose da mettere a fuoco;
sono sul newsgroup giusto ?
Paolo

Paolog ha scritto:

Non è che sapreste dirmi dove?
Paolo

 Non è che sapreste dirmi dove?
va bene qui, ma falle 'ste benedette domande!

rootkit ha scritto:

ciao,
allora:
ho fatto una funzione  con 'CREATE FUNCTION pgcond' ecc. ecc. per mysql.
Per fare in modo che hibernate possa usarla, prima di aprire la 
sessione, la carico sulla configurazione:
configuration = new Configuration();
configuration.addSqlFunction("pgcond", new StandardSQLFunction("pgcond" 
         , Hibernate.DOUBLE));
sessionFactory = configuration.configure().buildSessionFactory();
Fin qui tutto bene.
Il problema nasce quando uso jasperreport ed in particolare ireport:
quest' ultimo carica solo la configurazione presa da hibernate.cfg.xml.
Faccio un accrocchio, modifico il sorgente di ireport e carico la funzione.
Domanda:
E' possibile caricare la funzione da un file di mappaggio?
Se si, come?
Un' altra cosa: questa funzione l'ho fatta perche HQL non ha l'if then
nella sua grammatica.
Ho praticamente due tabelle relazionate uno a molti: quando il valore di 
un campo della prima tabella è true, prende il valore del campo1 della
seconda tabelle, se invece è false, il valore del campo2.
Con HQL si può scavalcare la funzione ?
Ed infine: è corretto impostare le tabelle nel modo che ho fatto io ?
Grazie infinite
Paolo
P.S. Oops: l'ho spedito anche a rootkit!

 Con HQL si può scavalcare la funzione ?
ti dico come farei io, anche se questo tipo di problematiche le ho
affrontate con oracle.
la funzione in questione la richiamerei come colonna della tabella,
per hibernate diventa una normale property ovviamente non
aggiornabile.
in questo modo dovresti aggirare anche il problema jasper.

 
Non mi è chiaro:
intendi dire che alla seconda tabella aggiungeresti un altro
campo diciamo calcolato i cui valori sono determinati dalla prima 
tabella in relazione con la seconda o sbaglio?
Quindi, dovrei modificare le tabelle del database.
Paolo

 Paolo
Potrei fare una vista ?
Paolo

 Potrei fare una vista ?
questa è la soluzione ottimale.

 questa č la soluzione ottimale.
Che ci sia qualche problema a trasportare il tutto su eventualmente
su un altro database.
Mi rispondo da solo... dipende dal database.
Ho dato un' occhiata ad hsqldb e non mi par di non aver visto grossi 
problemi a ricreare le tabelle e le viste che mi servono
Mi par di aver notato che il costrutto IF non c'č ma al suo posto c'č 
CASEWHEN.
Paolo


Non per Hibernate. Hibernate e le viste non vanno d'accordo per nulla, oltre
al fatto che le viste sono una "menata" e sparpagliano logica in giro per il
mondo. Di solito si usano solo per motivi di prestazioni quando si vuole
fare lavorare il dbms per megaQuery
In particolare il tuo problema specifico io lo risolverei con un metodo
sulla tabella1
public Tipo
getValoreDellaTabella2CheDipendeDalValoreTrueFalseDellaTabella1()
{
  if this.campotruefalse
      return this---->tabella2.campo1
  else
      return this---->tabella2.campo2
  // non so come hai la relazione fra le tabelle
}
ciao auguri a tutti
Nicola
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 mondo. 
bah. intanto le viste non contengono logica applicativa, e comunque in 
molti casi sono la soluzione più semplice al problema della reportistica 
(se non erro si parlava anche di jasper e ireport).

 (se non erro si parlava anche di jasper e ireport).
Esatto,
in effetti provando a fare una vista risolvo egregiamente la cosa.
Però per il tipo particolare di applicazione che devo fare (un piccolo 
gestionale che estrae le misure delle varie parti di un infisso da 
mandare in sezionatura da una serie di parametri dati in  precedenza) mi 
ritrovo a fare un mucchio di viste perchè ci sono tanti calcoli da fare 
anche incrociati tra loro. In caso di cambiamento di database la cosa 
non è molto semplice.
L' approccio precedente con jdbc era quello di creare una classe ad hoc 
con tutti i calcoli estraendo prima i valori dalle tabelle, caricarli 
nella classe ed elaborarli.
Mi è sembrato, e qui potrei sbagliarmi, il sistema più semplice per 
conservare i calcoli senza modificarli in previsione di un eventuale 
cambio di database.
Spostandomi su hibernate la cosa è un pochino diversa da jdbc,
ho letto l'idea di n.n. e mi sono accorto che avevo già fatto una prova;
anzi avevo cercato di andare oltre: volevo far ereditare la classe 
tabella1 che mi interessa ad una classe tipo:
class miecalcoli extends tabella1{
}
e qui i dolori perchè nonostante alcune prove non sono ancora riuscito a 
metterla in pratica.
Aggiungo una cosa: la cosa bella è che nel Database la tabella 
interessata ha solo l'ID della tabella relazionata, invece nell' oggetto 
estratto con hibernate dalla stessa tabella sopra, ci sono anche tutti i 
valori.
Paolo
P.s. sono giusto con l' identazione?

 eh?
Le viste non sempre hanno una chiave reale anzi di rado.
Cosi' nei pojo sei piu' o meno costretto a mettere come chiave tutti i campi
Ma non e' detto che tutti i campi bastano come chiave, oltre al fatto che la
chiave "totale" e' scomoda
ciauz
