Sfortunatamente, non c'è un modo migliore di quello che state facendo ora. Per fare ciò che stai descrivendo dovrai sovrascrivere il metodo, considerando che la tua annotazione JPA avrà bisogno di informazioni specifiche per la classe concreta.
Con le annotazioni JPA, in realtà sono disponibili due opzioni: è possibile annotare i metodi oppure annotare le proprietà. Nel nostro progetto ci siamo standardizzati sull'annotazione delle proprietà piuttosto che sui metodi, ma questo non vi aiuterà neanche, poiché le proprietà sono presumibilmente parte della classe concreta. (Se sono in qualche modo condivisi nella super-classe, allora DAVVERO sarà necessario annotare i metodi e sovrascriverli).
È difficile fare una raccomandazione senza vedere il tuo schema, ma se le tue classi di entità hanno così tanto in comune che condividono molte proprietà nella super-classe - potrebbero semplicemente essere memorizzate nella stessa tabella, magari con un colonna di tipo di differenziazione?
In alternativa se sono non quasi identico, potresti semplicemente riprodurre le proprietà comuni in ogni classe di calcestruzzo? Potresti essere tu stesso a causare più lavoro invece di salvarti cercando di catturare le proprietà comuni nella super classe. Dal momento che dovrai annotarli individualmente nelle lezioni concrete, basta dichiararli nelle lezioni concrete. Se hai bisogno di metodi comuni che interagiscono con queste proprietà, una risposta può essere una classe Utility separata per acquisire tali funzioni.
Nel nostro progetto, a volte utilizziamo una super classe comune per le entità, ma acquisisce alcuni metadati sull'entità, nulla che possa influire sulla logica di persistenza. Pertanto, non sono necessarie annotazioni JPA (né avrebbero senso) nella classe astratta.
fonte
2010-02-04 00:16:09
Inoltre, volevo aggiungere che il motivo per cui avevo bisogno di creare annotazioni nelle sottoclassi concrete in primo luogo era perché usano nomi di tabelle differenti in JPA e nomi di elementi in JAXB. La superclasse in questo caso è anche generica. – HDave