在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  網(wǎng)絡(luò)安全/ 關(guān)于spring data jpa布爾類型條件查詢異常

關(guān)于spring data jpa布爾類型條件查詢異常

entity:

 /**
 * 是否刪除
 */
private boolean delete;

 /**
 * 獲取 是否刪除
 */
@Column(name = "IS_DELETE", nullable = false)
public boolean isDelete() {
    return this.delete;
}

/**
 * 設(shè)置 是否刪除
 */
public void setDelete(boolean delete) {
    this.delete = delete;
}

jpa查詢:

// 創(chuàng)建時間倒序
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));
    }
};

關(guān)鍵在于這一行:

predicateList.add(cb.equal(root.<Boolean>get("delete"), false));

去掉就沒問題,感覺是boolean值的問題,相關(guān)文檔也沒找到,請教這樣的問題怎么解決?

異常信息:

java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: generatedAlias0 near line 1, column 136 [................]

難道delete屬性的get方法應(yīng)該是 getDelete() ???!!!

回答
編輯回答
逗婦乳

root.<Boolean>get("delete").as(Boolean.class)

2017年7月27日 18:41
編輯回答
默念

把關(guān)鍵字設(shè)成屬性字段是不是該算是自尋煩惱,建議你把delete改成deleted, 生活會變得輕松很多。

@Column(name = "IS_DELETE" 《==》get("delete")
2018年8月31日 16:55