我使用的是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
参数未设置?这是一个弹簧数据错误吗?
感谢您的帮助。