java - 使用泛型类型编写 HQL UPDATE 查询

标签 java spring hibernate spring-boot hql

我有一个通用的 tokenRepository 接口(interface):

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

}

还有一个专门的存储库接口(interface):

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 一起使用?

谢谢!

最佳答案

是的,这是可能的

@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")

关于java - 使用泛型类型编写 HQL UPDATE 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52028374/

相关文章:

java - JPA - 错误的重复外键

java - Java BitSet 对于并发只读操作线程安全吗

java - 使用 Java 使用 morphia mongodb 查找地理空间

java - 如何将 Dropwizard admin servlet 映射到面向公众的端口 (8080) 上的路由

spring - 使用 Spring 运行长流程的最佳方法是什么

java - 如何跟踪 webServiceTemplate 发送的 SOAP 请求

java - 未找到类异常

hibernate - 使用关联进行分页的 grails 中的 Hibernate Query 中的不同结果

java - Eclipse - 如何向 "New"菜单中的 "File"部分贡献操作?

java - Hibernate 查询以选择 Datetime 列的时间范围内的行