Spring-data查询方法忽略Class

时间:2018-06-01 14:44:26

标签: spring-data-jpa

我使用的是spring-data-jpa 2.0.7.RELEASE,spring-core 5.0.6.RELEASE,hibernate 5.2.17.Final和java 8.

我有一个带有查询方法的存储库类,它接受类型为Class的参数。例如:

public interface MyEntityRepository extends Repository<MyEntity, Integer>{

    @Query("select m from MyEntity m "
            + "where TYPE(m) = :myEntityClass "
            + "and m.attribute1 = :attribute1 ")
    List<MyEntityClass> findByClassAndAttribute1(
            @Param("myEntityClass") Class<? extends MyEntity> myEntityClass, 
            @Param("attribute1") boolean attribute1);
}

MyEntity是一个包含三个子类的抽象类,它使用@Inheritance@DiscriminatorColumn进行映射。

问题是spring-data没有在Hibernate查询中设置myEntityClass参数,但它确实设置了布尔attribute1参数。

以下是我从hibernate获取的错误消息:

org.hibernate.QueryException: Named parameter [myEntityClass] not set

作为测试,我删除了myEntityClass参数,查询运行没有错误。此外,用于处理spring-data-jpa 1.9.5.RELEASE的相同查询方法。

为什么myEntityClass参数未设置?这是一个弹簧数据错误吗?

感谢您的帮助。

0 个答案:

没有答案