Lamentablemente, no hay una mejor manera de lo que está haciendo ahora. Para hacer lo que está describiendo, tendrá que anular el método, teniendo en cuenta que su anotación JPA necesitará información específica para la clase concreta.
Con las anotaciones JPA, en realidad tiene dos opciones: puede anotar los métodos o puede anotar las propiedades. En nuestro proyecto, hemos estandarizado las propiedades de las anotaciones en lugar de los métodos, pero tampoco le servirá de nada, ya que las propiedades son presumiblemente parte de la clase concreta. (Si de alguna manera se comparten en la superclase, REALMENTE necesitará anotar los métodos y anularlos).
Es difícil hacer una recomendación sin ver su esquema, pero si sus clases de entidad tienen tanto en común que comparten muchas propiedades en la superclase, ¿podrían simplemente almacenarse en la misma tabla, quizás con un columna de tipo diferenciador?
O, como alternativa, si son no casi idénticos, ¿podría reproducir las propiedades comunes en cada clase concreta? Es posible que esté causando más trabajo en lugar de ahorrarse tratando de capturar las propiedades comunes en la súper clase. Ya que tendrá que anotarlos individualmente en las clases concretas, solo debe declararlos en las clases concretas. Si necesita métodos comunes que interactúen con estas propiedades, una clase de utilidad separada para capturar esas funciones podría ser la respuesta.
En nuestro proyecto, A veces utilizamos una superclase común para entidades, pero captura algunos metadatos sobre la entidad, nada que impacte la lógica de persistencia. Por lo tanto, no se necesitan anotaciones JPA (ni tendrían sentido) en la clase abstracta.
También quería agregar que la razón por la que necesitaba crear anotaciones en las subclases concretas en primer lugar era porque usan diferentes nombres de tablas en JPA y nombres de elementos en JAXB. La superclase en este caso también es genérica. – HDave