第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

JPA 標(biāo)準(zhǔn)產(chǎn)生一個(gè)只有一個(gè)問(wèn)題點(diǎn)的查詢(xún)

JPA 標(biāo)準(zhǔn)產(chǎn)生一個(gè)只有一個(gè)問(wèn)題點(diǎn)的查詢(xún)

慕容森 2023-05-10 14:10:14
在我們的數(shù)據(jù)庫(kù)中,我們有緩存系統(tǒng),它對(duì)查詢(xún)綁定參數(shù)敏感。我有以下查詢(xún)創(chuàng)建:@Overridepublic Predicate toPredicate(Root<Position> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {    query.distinct(true);    final Collection<Predicate> predicates = new ArrayList<>();    Join<Position, ManagersPositions> managersPositionsJoin = root.join("managersPositions", JoinType.INNER);    Predicate managerPredicate = criteriaBuilder.equal(managersPositionsJoin.get("managerId"), managerId);    predicates.add(managerPredicate);    if (onlyDirect) {        Predicate equalsDirect = criteriaBuilder.equal(managersPositionsJoin.get("isDirect"), true);        predicates.add(equalsDirect);    }    return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));}它產(chǎn)生以下查詢(xún):select   distinct position0_.id as id1_69_0_,   ...where managerspo1_.manager_id=22and managerspo1_.is_direct=?我必須發(fā)送帶有 2 個(gè)綁定參數(shù)的請(qǐng)求,例如:where managerspo1_.manager_id=?and managerspo1_.is_direct=?如何解決第一個(gè)“?”的問(wèn)題?
查看完整描述

2 回答

?
牛魔王的故事

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊

我還沒(méi)有找到解決問(wèn)題的方法,我的決定是在沒(méi)有規(guī)范的情況下使用實(shí)體管理器“手動(dòng)創(chuàng)建”查詢(xún)。


final String queryString = "select distinct pos from Position pos " +

            "inner join pos.managersPositions mn " +

            "where mn.managerId = :managerId and mn.isDirect = :isDirect ";


    TypedQuery<Position> query = entityManager.createQuery(

            queryString,

            Position.class);

    query.setParameter("managerId", managerEmployeeId);

    query.setParameter("isDirect", true);

因?yàn)楫?dāng)我制作它時(shí)criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));,它只制作了一個(gè)帶有一個(gè)參數(shù)的謂詞。


還嘗試將規(guī)格分為 2,結(jié)果不成功:


Specification.where(firstSpecification).and(secondSpecification)


查看完整回答
反對(duì) 回復(fù) 2023-05-10
?
吃雞游戲

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

使用 CriteriaBuilder.parameter() 添加多個(gè)參數(shù):


    ParameterExpression<Integer> managerIdParam = 

        criteriaBuilder.parameter( Integer.class );

    ParameterExpression<Boolean> isDirectParam = 

        criteriaBuilder.parameter( Boolean.class );

    Predicate managerPredicate = 

        criteriaBuilder.equal(managersPositionsJoin.get("managerId"), 

        managerIdParam);

    Predicate equalsDirect = 

        criteriaBuilder.equal(managersPositionsJoin.get("isDirect"), isDirectParam);


查看完整回答
反對(duì) 回復(fù) 2023-05-10
  • 2 回答
  • 0 關(guān)注
  • 324 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)