亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 SpringData 在字符串中以隨機順序在多個 LIKE 中搜索單詞

如何使用 SpringData 在字符串中以隨機順序在多個 LIKE 中搜索單詞

青春有我 2022-06-04 14:58:25
我有字符串“AlphaBetaZeta GammaTheta”(來自 MS SQL 數據庫的表字段),我需要使用具有許多類似的彈簧數據和隨機順序和關鍵字的隨機計數進行搜索我正在嘗試搜索:findByLabelContaining(Collection<String> labels)findByLabelLike(Collection<String> labels)但這些不起作用。在數據庫中啟用全文搜索或使用彈性我不能,只有帶有本機接口方法或自定義 jpql-query 的 Spring-Data。SELECT id, labelFROM TABLE10WHERE label like '%gam%' AND      label like '%alpha%' AND      label LIKE '%theta%'SELECT id, labelFROM TABLE10WHERE label like '%alpha%' AND      label like '%theta%'和更多..
查看完整描述

1 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

使用自定義本機查詢:


@Query(value = "SELECT id, label

FROM TABLE10

WHERE label like %?1%", native = true)

  List<User> findByLabel(String a);

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#_using_advanced_like_expressions


如果您需要可變數量的參數,則必須編寫自己的查詢:


@PersistenceContext

EntityManager entityManager;


@Override

public List<YourClass> findByLabelLike(List<String> labels) {

    String q = "SELECT id, label FROM TABLE10";


    for (String l : labels) {

       // Add where and ORs

    }


    Query query = entityManager.createNativeQuery(q, YourClass.class);

    int i = 0;

    for (String label : labels) {

          query.setParameter(++i, "%"+label+"%");

    }


    return query.getResultList();

}


查看完整回答
反對 回復 2022-06-04
  • 1 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號