본문 바로가기

반응형

개발/JPA

(4)
[JPA] @Query 어노테이션을 이용하여 nativeQeury 작성(jpa 에서 group by 사용하기) - 나의 상황 select crl from ra_crl where (elector_group_id, crl_version) in ( select elector_group_id, max(crl_version) as crl_version from ra_crl group by elector_group_id ) 이런 쿼리를 jpa로 작성해야했음. 근데 jpa 는 group by 를 지원하지않음. - 해결 Repository 에서 @Query 어노테이션을 이용하여 직접 쿼리를 작성하며, nativeQuery = true 를 추가해줘야함. 주의사항으로는 컬럼명을 entity에 정의한대로 쓰지 못하고 실제 db의 컬럼명을 사용해야하며 return 결과도 entity로 바로 받지 못한다. 예를들어 조회해오는 항목이 둘..
[JPA] @Query 로 직접 쿼리 작성하기 JPA 로 개발을 할때는 대부분은 Repository 에서 키워드만 잘 조합하면 모든 쿼리를 자동으로 만들어줘서 아주아주 편리하다. 그러나 조금만 복잡해져도 쿼리 메소드가 아주아주 길어진다. 그럴땐 그냥 @Query 쿼리 어노테이션을 이용하여 조금 더 자세한 조건을 줄 수 있다. @Query 어노테이션을 사용하면 직접 쿼리문을 작성할 수 있다. @Query("select a.* from entity a where a.status = 1") List findAllByStatus(); 만약 변수를 받아 쿼리를 조회하고 싶다면 ':' 를 사용하면 된다. @Query("select a.* from table a where a.status = :stats") List findAllByStatus(int statu..
[JPA] Unable to locate Attribute with the the given name [column] on this ManagedType ..어쩌구..저쩌구.. 나의 상황 : 검색 조건을 위해 추가한 Specification 에 선언한 값과 db의 column 값이 달라서 발생(오타) 해결 : 오타 수정하니 간단하게 해결..다들 이런 에러 발생하면 변수명을 다시 한번 확인해보길..!
[JPA] entity 에서 DB의 column으로 쓰고 싶지 않은 변수 처리! @Transient JPA 를 사용할 때, entity 에 작성한 변수는 자동으로 db의 컬럼으로 만들어진다. 화면에서 검색 조건 이나, 데이터를 변환에서 보여주고 싶은 경우 등등 db의 컬럼은 아닌데 변수를 쓰고싶은 경우! 두 가지 방법이 있다. 첫번째로 vo 에만 해당 변수를 선언해서 사용하면 된다. entity는 db와 매핑하는 용도, vo는 화면과 매핑하는 용도이니.. vo 에만 잘 선언해두고 잘 사용하면 끝.. (entity 와 vo는 mapper 를 사용하여 같은 변수들은 간단하게 변환 가능.) 근데 vo 도 만들기 귀찮고.. mapper 도 쓰기 싫고..entity 하나로 끝내고 싶다면 두번째 방법인 @Transient 어노테이션을 사용하자! entity 에 db의 column으로 사용하지 않을 변수에는 @Tr..

반응형