kotlin

    [JPA] native query 사용 시 enum을 변수로 하기 ( SpEL expression )

    🙂 Native Query 란? JPQL을 사용해서 쿼리 메소드를 사용하는 것이 아닌 MySQL과 비슷한 형식으로 쿼리를 만들어 적용할 수 있다. 그러나, JPQL에서는 표준 SQL의 대부분의 기능을 지원하지만, 지원하지 못하는 문법들도 존재한다. ( ex. sub query ) 이때 Native Query를 사용하면 JPQL에서 지원하지 못하는 문법들을 사용할 수 있다. 🙂 Native Query 를 사용하는 방법 //-- JPQL @Query(value="SELECT M from Member M" ) //-- Native Query @Query(value="SELECT * from Member m", nativeQuery= true ) 🙂 Native Query에서 @Param에 Enum을 넣는 방법..

    [JPA] JPA native query 사용시 dto mapping

    보통 조인을 많이 사용하게 될 상황이 생기면 JPA Native query를 사용한다. 이 때, 조인되어지는 테이블들의 column 값을 사용해야하는 상황에는 Entity에 맵핑을 시켜줄 수 없는 문제가 있다. 이럴 때에는 바로 원하는 변수가 있는 DTO에 맵핑을 시켜주어야 하는데,, 어떤 방법들이 있을까? 1. Entity에서의 `@SqlResultSetMapping` 사용 @Entity @NamedNativeQuery( name = "find_books', query = "SELECT " + " 생략.... ", resultSetMapping = "book_dto" ) @SqlResultSetMapping( name = "book_dto", classes = @ConstructorResult( tar..

    [Error] org.hibernate.LazyInitializationException: could not initialize proxy

    😀 원인 파악 코드를 열심히 작성해서 리뷰를 받고, 즐거운 마음으로 라이브 배포를 했다.. 그러나 몇 분이 지나지 않고 error alert이 나오기 시작했고,,, 정말 어처구니 없는 실수를 했다는 것을 깨달았다. 에러 내용은 JPA에서 나온 오류였다.. org.hibernate.LazyInitializationException: could not initialize proxy 위와 같은 오류가 생긴 원인을 파악하기 위해서 구현한 부분을 다시 보았고, Entity 객체를 DTO 객체로 변경하기 위해 BeanUtils copyProperties로 간편하게 하려고 했던 부분해서 문제가 있다는 것을 발견할 수 있었다.. (괜히 빠르게 하려다가..) BeanUtils copyProperties란? 스프링에서 제..