La mejor manera de manejar la herencia de entidades en Spring Data JPA
Tengo tresEntidad JPA clasesA
, B
yC
con la siguiente jerarquía:
A
|
+---+---+
| |
C B
Es decir:
@Entity
@Inheritance
public abstract class A { /* ... */ }
@Entity
public class B extends A { /* ... */ }
@Entity
public class C extends A { /* ... */ }
UtilizandoSpring Data JPA, cual es la mejor manera de escribirrepositorios clases para tales entidades?
Sé que puedo escribir esto:
public interface ARespository extends CrudRepository<A, Long> { }
public interface BRespository extends CrudRepository<B, Long> { }
public interface CRespository extends CrudRepository<C, Long> { }
pero si en la claseA
hay un camponame
y agrego este método en elARepository
:
public A findByName(String name);
Tengo que escribir este método también en los otros dos repositorios, y esto es un poco molesto. ¿Hay una mejor manera de manejar tal situación?
Otro punto que me gustaría tener es queARespository
debe ser un repositorio de solo lectura (es decir, extender elRepository
clase) mientras que los otros dos repositorios deben exponer todas las operaciones CRUD.
Déjame saber posibles soluciones.