본문 바로가기
Java

자바 Jpql dynamic query

by NaHyungMin 2022. 9. 21.

 

@Query(value = "SELECT * FROM t_building_materials WHERE partner_code = :partnerCode ", nativeQuery = true)
List<BuildingMaterialsEntity> getBuildingMaterialsEntityByNumber(@Param("partnerCode") String partnerCode);

일반적으로 Repository에 간단하게 추가하면 됨.

기본 동작이 아닌 경우  조회인 경우 매개변수가 없을 경우가 존재하므로 따로 조회해야 함.

@PersistenceContext EntityManager entityManager;

String partnerCode = redisUserInformation.getPartnerCode();
String jpql = " SELECT c FROM t_customer_company AS c WHERE c.partnerCode = :partnerCode " +
              " AND c." + search + " = :searchValue ";
TypedQuery<CustomerEntity> typedQuery = entityManager.createQuery(jpql, CustomerEntity.class);
typedQuery.setParameter("partnerCode", partnerCode);
typedQuery.setParameter("searchValue", searchValue);

ResponseResult responseResult = new ResponseResult(ResultCode.Success);
responseResult.add("customer_entity_list", typedQuery.getResultList());
return responseResult;

createQuery, getResultList 오류 처리 필요.
TypedQuery : 단일 클래스 조회할 시, 타입이 명확한 경우
Query : 타입이 불명확할때, Join 등
@Column(name ="partner_code")
private String partnerCode;

처음에 쿼리 만들 때 당연히 데이터베이스에 있는 컬럼으로 생각해서, partner_code를 넣었는데 장애가 발생.

@Entity(name = "t_customer_company")
@Table(name = "t_customer_company")
@Data
public class CustomerEntity {

 

처음 만드는 사람은 AS로 * 대신 조회하는 내용과 Eintity 어노테이션 제외하고 조회 숙지하면 될듯.

'Java' 카테고리의 다른 글

자바 열거형 Find Value  (1) 2022.09.23
자바 Jpa Entity -> Sql Default Value  (0) 2022.09.21
자바 MessageFormat  (0) 2022.05.20
자바 비밀번호 생성(금융보안원)  (1) 2022.05.10
자바 프로그래머스 위클리 챌린지 8주차  (0) 2021.10.01