entity:
/**
* 是否删除
*/
private boolean delete;
/**
* 获取 是否删除
*/
@Column(name = "IS_DELETE", nullable = false)
public boolean isDelete() {
return this.delete;
}
/**
* 设置 是否删除
*/
public void setDelete(boolean delete) {
this.delete = delete;
}
jpa查询:
// 创建时间倒序
Sort.Order order = new Sort.Order(Sort.Direction.DESC, "articleId");
Pageable pageable = new PageRequest(articlePageForm.getPageNo() - 1, articlePageForm.getPageSize(), new Sort(order));
Specification<ArticleEntity> specification = new Specification<ArticleEntity>() {
@Override
public Predicate toPredicate(Root<ArticleEntity> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> predicateList = new ArrayList<>();
predicateList.add(cb.equal(root.get("userId"), "100001"));
predicateList.add(cb.equal(root.<Boolean>get("delete"), false));
Predicate[] pre = new Predicate[predicateList.size()];
return cb.and(predicateList.toArray(pre));
}
};
关键在于这一行:
predicateList.add(cb.equal(root.<Boolean>get("delete"), false));
去掉就没问题,感觉是boolean值的问题,相关文档也没找到,请教这样的问题怎么解决?
异常信息:
java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: generatedAlias0 near line 1, column 136 [................]
难道delete
属性的get方法应该是 getDelete()
???!!!
把关键字设成属性字段是不是该算是自寻烦恼,建议你把delete改成deleted, 生活会变得轻松很多。