@adreSsS

Spring Data JPA — JPQL Update query?

У меня есть конкретное упражнение в рамках домашнего задания на уроках в университете. Данная структура сущности выглядит так:
@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);
}


Это был всего лишь мой слепой выстрел, но я не смог найти никаких материалов, которые объясняли бы, как делать такие вещи.
Есть ли у кого-нибудь предложения, как решить эту задачу?
  • Вопрос задан
  • 195 просмотров
Пригласить эксперта
Ответы на вопрос 1
BorLaze
@BorLaze
Java developer
А разве указывать имя таблицы параметром можно?

Насколько мне известно, это разрешено только для полей таблицы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы