@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);
}


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

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

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

Войти через центр авторизации
Похожие вопросы