如何为QueryDslPredicateExecutor编写谓词

时间:2016-11-16 13:29:12

标签: spring spring-data spring-data-jpa predicate querydsl

当我尝试使用Spring引用Spring 1.10.4.RELEASE reference中显示的Querydsl时 - 我从IDE中收到一些错误: 无法解析方法findAll(谓词)。我将导入更改为com.mysema.query.types.Predicate。现在方法看起来很好。 但我无法解决问题:

Predicate predicate = user.getUsername().equalsIgnoreCase(username).and((user.getId().equals(userid)).not);

我收到错误:无法解决方法:而且,无法解决方法。

一些来自参考: 示例32.存储库中的Querydsl集成

interface UserRepository extends CrudRepository<User, Long>, QueryDslPredicateExecutor<User> {

}

以上功能可以使用Querydsl Predicate s。

编写类型安全查询
Predicate predicate = user.firstname.equalsIgnoreCase("dave")
.and(user.lastname.startsWithIgnoreCase("mathews"));

userRepository.findAll(predicate);

但是例子不正确。 有谁知道如何使用它?

1 个答案:

答案 0 :(得分:0)

您可能正在使用错误的user对象开始。我假设您当前正在使用您的域类User,但您需要使用Querydsl生成的类,通常名为QUser

请参阅https://github.com/querydsl/querydsl/tree/master/querydsl-jpa代码示例。

有关如何使用Querydsl生成必要的类,请参阅QueryDsl - How to create Q classes with maven?