Spring Data Jpa 类作为Spring Data的查询方法中的参数

4ioopgfo  于 4个月前  发布在  Spring
关注(0)|答案(1)|浏览(82)

我在Spring Data的repository中有这样的方法:

public interface GameSessionRepository extends JpaRepository<GameSession, Long> {
  
  @Query("SELECT gs FROM GameSession gs WHERE TYPE(gs) = :gameSessionType")
    <T extends GameSession> Optional<T> findActive(
            @Param("gameSessionType") Class<T> gameSessionType
    );
}

字符串
但是调用给了我一个异常:org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.QueryException: Named parameter not bound : gameSessionType
对于上下文,GameSession是一个抽象实体类,有两个具体实现:QuizGameSessionTranslationGameSession
我的问题是:是否有可能在Spring Data中实现这种签名?

bgibtngc

bgibtngc1#

你不能。在Spring Data中按原样实现GameSessionRepository接口的签名是不可能的。原因是Spring Data JPA不支持查询中的动态类型参数。
或许可以:

public interface GameSessionRepository extends JpaRepository<GameSession, Long> {

    @Query("SELECT gs FROM GameSession gs WHERE TYPE(gs) = :gameSessionType")
    <T extends GameSession> Optional<T> findActive(
            @Param("gameSessionType") String gameSessionType
    );
}

字符串

相关问题