В Spring Data можно расширить запрос, который генерируется функциями find * интерфейсов репо?Крюк запроса хранилища Spring Data
Учитывая следующий случай использования:
Моя база данных имеет наследие наследство по таблице. Поэтому, учитывая следующее
@Entity public class Person {
private int id;
private String className;
}
@Entity @PrimaryKeyJoinColumn(name="id") public class Musician extends Person {
String instrument;
}
@Entity @PrimaryKeyJoinColumn(name="id") public class Lawyer extends Person {
String discipline;
}
Мой репозиторий для музыканта:
public interface MusicianRepository extends CrudRepository<Musician, int> {
List<Musician> findAll();
}
Теперь запись для нового музыканта в SQL будет:
insert into Person(id, className) values(1, 'Musician');
insert into Musician(id, instrument) values(1, 'piano');
Когда музыкант получил мигрировали к адвокату старая система добавила один ряд в таблицу юристов без удаления Музыканта:
insert into Lawyer(id, discipline), values(1, 'finance');
update Person set ClassName = 'Lawyer' where ID = 1;
My MusicianRepo теперь найдет адвоката, так как ряд в Музыканте все еще существует.
Мне нужен какой-то постпроцессор, где я мог бы расширить запрос, добавив предложение where с «ClassName = 'Musician» на всех методах find *.
Возможно ли это как-то?
Привет, он соединяется, но не добавляет необходимое условие для className в предложение where команды sql. – rainerhahnekamp