Написать HQL UPDATE запрос с универсальным типом - PullRequest
0 голосов
/ 26 августа 2018

У меня есть общий интерфейс tokenRepository:

public interface TokenRepository<T_Token extends Token, T_id> {

   @Modifying
   @Query("UPDATE T_token as a SET a.revocationReason = :reason WHERE a.id = :id")
   void revokeByTokenId (@Param("id") T_id id, @Param("reason") RevocationReason revocationReason);

}

и специализированный интерфейс репозитория:

public interface CustomerTokenRepository extends Repository<CustomerToken, Long>, TokenRepository<CustomerToken, Long> {}

Когда я запускаю приложение Spring Boot, hibernate возвращает следующую ошибку:

org.hibernate.hql.internal.ast.QuerySyntaxException: T_token is not mapped [UPDATE T_token as a SET a.revocationReason = :reason WHERE a.id = :id]

Итак, мой вопрос: возможно ли и как использовать универсальный тип Java с HQL?

Спасибо!

1 Ответ

0 голосов
/ 26 августа 2018

Да, это возможно

@Modifying
   @Query("UPDATE #{#entityName} as a SET a.userRevocationReason = :reason WHERE a.refreshToken.id = :rid")
   void revokeByRefreshToken (@Param("rid") T_id refreshTokenId, @Param("reason") UserRevocationReason userRevocationReason);

Где имя объекта @Entity(name = "my_entit_name")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...