JPA 4

[JPA] queryDsl cannot find symbol Q class 오류

JPA에서 QueryDsl 을 사용해서 CustomRepository의 쿼리문을 작성 할 때 Q class 큐 클래스를 이용해서 바로 dto에 결과를 담도록 select 를 하기도 한다. 그런데 @Query 어노테이션도 클래스 생성자에 잘 달아주었고, 각각의 필드의 자료형도 잘 넣어서 순서대로 해주었는데 무엇이 문제인지 자꾸 cannot find symbol Q class 라는 오류를 뱉어내며 빌드가 되지 않았다. 이것또한 실수에서 비롯된 에러였다. private JPAQuery .... return select ( new QMemberaddressDTO( .... 위와 같은 q class를 이용한 customRepository queryDsl 이 있다고 치자. 이때 여기서 뭔가 이상한 점을 발견 했는가..

백엔드/Spring 2023.05.11

[JPA] but parameter 'Optional[xx]' not found in annotated query.

JPA의 Repository를 사용하다보면 쿼리를 작성할 때 어노테이션 쿼리를 사용하기도 하고 네임쿼리를 사용하기도 한다. 그런데 이때 변수를 전달해서 동적인 쿼리를 작성하곤 하는데 제목과 같이 not found in annotated query. 라는 오류를 뱉을 때가 있다. 이 경우 아주 간단한 문제이므로 잘 확인 해보길 바란다. 예를 들어, 생성일자를 변수로 쿼리에 전달한다고 할 때 다음과 같은 쿼리가 있다고 치자. ... and a.createdDateTime

백엔드/Spring 2023.05.11

JPA Annotations JPA 어노테이션

JPA Annotations Lombok 을 통해 어노테이션을 사용하여 JPA를 이용해보자. - @Id : 각 엔티티를 구별할 수 있도록 식별 ID를 가지게 설계한다. (PK) Attribute Type strategy AUTO, TABLE, SEQUENCE, IDENTIY generator @TableGenerator, @SequenceGenerator - 데이터베이스마다 식별키 지정 방식에 차이가 있지만 일반적으로 (1)사용자 직접지정, (2)자동생성, (3)별도의 방법 으로 이루어져 있는데 @GeneratedValue 어노테이션을 통해 생성 전략을 설정한다. - 작성 방식은 @GeneratedValue(strategy = GenerationType.??????) 과 같으며 ?????? 안에 어떤 방..

백엔드 2022.01.17

Spring Boot JPA란?

JPA(Java Persistence API)란? JPA란 Java Persistence API의 약자로 Java를 이용해서 데이터를 유지 또는 관리하는 기법을 하나의 스펙으로 정리한 표준 기존의 JDBC 등을 이용해서 직접 구현헀던 데이터베이스 관련 작업을 대신 처리해 주는 추상화된 계층의 구현 스펙으로 JPA를 이용하면 데이터베이스에 대한 처리를 JPA계층에서 처리하기 때문에 좀 더 추상화된 형태의 코드를 제작하는 것만으로 개발이 가능해진다. 하지만, JPA는 그 자체로는 스펙에 불과하기 때문에 이를 실제로 구현한 제품이나 프레임워크들의 존재가 필수적이다. JPA의 장점 1. DB 관련 코드에 대해 유연함을 얻을 수 있다. - 기존에는 DB(DataBase)에 변경이 일어나게되면 SQL문을 비롯한 D..

백엔드 2022.01.17
반응형