У меня есть три класса JPA A
, B
и C
со следующей иерархией:
A
|
+---+---+
| |
C B
То есть:
@Entity
@Inheritance
public abstract class A { /* ... */ }
@Entity
public class B extends A { /* ... */ }
@Entity
public class C extends A { /* ... */ }
Используя Spring Data JPA, каков наилучший способ записи классов репозиториев для таких объектов?
Я знаю, что могу написать их:
public interface ARespository extends CrudRepository<A, Long> { }
public interface BRespository extends CrudRepository<B, Long> { }
public interface CRespository extends CrudRepository<C, Long> { }
но если в классе A
есть поле name
, и я добавляю этот метод в ARepository
:
public A findByName(String name);
Я должен написать такой метод и в двух других репозиториях, и это немного раздражает. Есть ли лучший способ справиться с такой ситуацией?
Еще одна точка, которую я хотел бы иметь, заключается в том, что ARespository
должен быть репозиторием только для чтения (т.е. расширять класс Repository
), в то время как другие два репозитория должны выставлять все операции CRUD.
Позвольте мне знать возможные решения.