Ciao,
come fai a dire che non ci sono differenze?
Con @MappedSuperclass semplicemente dici che la superclasse contiene
delle annotazioni che devono essere usate per il mapping delle
sottoclassi. Non c'è nessuna gerarchia di ereditarietà per i dati
mappati: sono totalmente indipendenti.
Con @Inheritance invece i dati mappati sono in relazione gerarchica.
Quindi, ad esempio, una query sull'entità padre produce come risultati
anche istanze delle entità figlie.
Ciao
Lucio
--
Lucio Benfante
JUG Padova http://www.parancoe.org ...have a look at it!
www.jugpadova.it http://www.jugevents.org
On Nov 25, 2:20 pm, Lucio Benfante <lucio.benfa...@jugpadova.it> wrote: [cut]Ciao, come fai a dire che non ci sono differenze?Sono sicuro che c'è una differenza ma comunque avevo parlato di differenza sostanziale, infatti usando @MappedSuperclass ottengo proprio quanto desiderato, ovvero lato java uso il concetto di ereditarietà e lato DB ho differenti tabelle come volevo.Con @MappedSuperclass semplicemente dici che la superclasse contiene delle annotazioni che devono essere usate per il mapping delle sottoclassi. Non c'è nessuna gerarchia di ereditarietà per i dati mappati: sono totalmente indipendenti.Non capisco, cosa intendi per dati mappati? Le tabelle associate alle classi che estendono la mia superclasse hanno esattamente gli attributi definiti nella superclasse, ed è proprio quanto volevo. Non capisco cosa di diverso avrei potuto ottenere da un punto di vista sostanziale usando @Inheritance , che ripeto con parancoe non c'è verso di far funzionare.
Ok scusa non voglio scaricare le colpe, figurati, diciamo che non sono riuscito a farlo funzionare, se magari mi fornisci un esempio valido te ne sarei grato :)
Ora ho capito.
Sì, in effetti non puoi farlo se vuoi usare EntityBase, perchè in quella
classe la strategia di generazione della chiave primaria è AUTO, il che
significa che potrebbe essere anche IDENTITY, e IDENTITY non può essere
usata con una strategia di ereditarietà TABLE_PER_CLASS.
Purtroppo non c'è modo (che io sappia...se qualcuno lo sa...grazie se ce
lo dice) di fare l'overriding di tale definizione in una sottoclasse.
Quiundi l'unica soluzione è non usare EntityBase, ma definire l'Id e
tutto quello che serve nella propria classe (o definirsi una nuova
classe base con un'opportuna strategia di generazione).
Ciao
Lucio
--
Lucio Benfante