콘텐츠로 건너뛰기
리뷰나라
  • JAVASCRIPT
  • JAVA
  • PYTHON
  • C#
  • Android
  • Html

[java] 유사 절 JPQL의 매개 변수

Program / 글쓴이 어드민

like 절을 사용하여 JPQL 쿼리를 작성하려고합니다.

LIKE '%:code%'

나는 code = 4를 갖고 싶습니다.

455
554
646
...

나는 통과 할 수 없다 :code = '%value%'

namedQuery.setParameter("%" + this.value + "%");

다른 장소 :value에서는 %문자로 감싸지 않아도 됩니다 . 도움이 필요하세요?



답변

만약 당신이

LIKE :code

그리고

namedQuery.setParameter("code", "%" + this.value + "%");

그러면 값은 ‘%’기호에서 자유 로워집니다. 동일한 쿼리의 다른 곳에서 사용해야하는 경우 ‘code’이외의 다른 매개 변수 이름을 사용하면됩니다.


답변

모든 쿼리에 명명 된 매개 변수를 사용하지 않습니다. 예를 들어 JpaRepository 에서 명명 된 매개 변수를 사용하는 것은 드문 경우입니다. .

해결 방법으로 JPQL CONCAT 함수를 사용 합니다 (이 코드는으로 시작을 에뮬레이트 함 ).

@Repository
public interface BranchRepository extends JpaRepository<Branch, String> {
    private static final String QUERY = "select b from Branch b"
       + " left join b.filial f"
       + " where f.id = ?1 and b.id like CONCAT(?2, '%')";
    @Query(QUERY)
    List<Branch> findByFilialAndBranchLike(String filialId, String branchCode);
}

이 기술은 우수한 문서에서 찾았습니다. http://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/manual/jpa_overview_query.html


답변

JPA LOCATE 함수를 사용할 수 있습니다 .

LOCATE (searchString, 후보 문자열 [, startIndex]) : 후보 문자열에서 검색 문자열의 첫 번째 인덱스를 반환합니다. 위치는 1 기반입니다. 문자열이 없으면 0을 반환합니다.

참고 : 내 최고의 Google 히트 문서에 매개 변수가 반전되었습니다.

SELECT
  e
FROM
  entity e
WHERE
  (0 < LOCATE(:searchStr, e.property))


답변

내가 늦었는지 또는 범위를 벗어 났는지 모르겠지만 내 의견으로는 다음과 같이 할 수 있습니다.

String orgName = "anyParamValue";

Query q = em.createQuery("Select O from Organization O where O.orgName LIKE '%:orgName%'");

q.setParameter("orgName", orgName);


답변

JPA 기준 API에는 멋진 like () 메소드가 있습니다. 그것을 사용하십시오, 그것이 도움이되기를 바랍니다.

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery criteriaQuery = cb.createQuery(Employees.class);
Root<Employees> rootOfQuery = criteriaQuery.from(Employees.class);
criteriaQuery.select(rootOfQuery).where(cb.like(rootOfQuery.get("firstName"), "H%"));


답변

  1. 아래 JPQL 쿼리를 사용하십시오.
select i from Instructor i where i.address LIKE CONCAT('%',:address ,'%')");
  1. 동일한 기준 코드 아래 사용 :
@Test
public void findAllHavingAddressLike() {
    CriteriaBuilder cb = criteriaUtils.criteriaBuilder();
    CriteriaQuery<Instructor> cq = cb.createQuery(Instructor.class);
    Root<Instructor> root = cq.from(Instructor.class);
    printResultList(cq.select(root).where(
        cb.like(root.get(Instructor_.address), "%#1074%")));
}


답변

그냥 ”

LIKE %:code%




글 탐색

← 이전 글
다음 글 →

최신 글

  • [java] .pem 파일을 읽고 개인 및 공개 키를 얻는 방법
  • [javascript] 페이지의 모든 AJAX 요청에 “후크”추가
  • [android] ListView가 접히지 않고 어떻게 ScrollView에 넣을 수 있습니까?
  • [linux] Apache 서버의 루트 디렉토리를 어떻게 변경합니까? [닫은]
  • [ios] Swift에서 Int를 Hex String으로 변환하는 방법
  • [python] 등급 시스템 기능에서 반복적 인 if-elif 문을 어떻게 단순화 할 수 있습니까?
  • [c#] C #에서 스택 오버플로 예외 포착
  • [windows] Windows의 /usr/local/ssl/openssl.cnf에서 구성 정보를로드 할 수 없습니다
  • [twitter-bootstrap] Bootstrap을 사용하여 모바일에 테이블을 표시하는 방법은 무엇입니까?
  • [windows] BATCH 스크립트에서 무작위로 사용하는 방법은 무엇입니까?

카테고리

태그

.net android angular angularjs arrays asp.net asp.net-mvc bash c c# css database django docker html ios iphone java javascript jquery json linux macos mysql node.js objective-c pandas php postgresql python r reactjs regex ruby ruby-on-rails shell sql sql-server string swift typescript unix visual-studio windows xcode
Copyright © daplus.net - Powered by Naya