У меня есть конкретное упражнение в рамках домашнего задания на уроках в университете. Данная структура сущности выглядит так:
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Parent {
...some fields...
}
@Entity
public class ChildA extends Parent {
...
}
@Entity
public class ChildB extends Parent {
...
}
Мне нужно реализовать метод JpaRepository в ParentRepository или, скорее, JPQL Query, чтобы выполнить операцию обновления в таблице, указанной в Class <? расширяет параметр Parent>. Просто метод должен обновлять какое-то поле, но только в подклассе, заданном как параметр.
Структура метода должна быть:
public interface ParentRepository extends JpaRepository<Parent, Integer> {
void updateInBulk(Class<? extends Parent> clazz, int someParameter);
}
Я придумал что-то вроде этого, но это не сработало.
public interface ParentRepository extends JpaRepository<Parent, Integer> {
@Modifying
@Query("update :entity e set e.some_field = 'T' where e.other_field > :some_param")
void updateInBulk(@Param("entity") Class<? extends Parent> clazz, @Param("some_param") int someParam);
}
Это был всего лишь мой слепой выстрел, но я не смог найти никаких материалов, которые объясняли бы, как делать такие вещи.
Есть ли у кого-нибудь предложения, как решить эту задачу?