jpa

잔디심는 정원사
[JPA] MultipleBagFetchException와 N+1문제 동시에 해결하기
·Spring/JPA
안녕하세요! 오늘은 JPA를 사용하다보면 한 번쯤 만나게 되는 에러인 N+1문제와 MultipleBagFetchException문제를 해결하는 방법에 대해 공유하고자 합니다. 🥲 문제 상황 제 프로젝트에서 한 엔티티가 2개의 연관된 엔티티를 List 타입으로 가지고 있었습니다. 그리고 게시글 전체를 조회할 때 JobPost의 WorkDay(요일)와 Job(하는 일)은 모두 보여줘야 했습니다. { "data": { "numOfPost": 0, "posts": [ { "jobPostId": null, "title": "string", "storeName": "string", "latitude": 0.0, "longitude": 0.0, "salary": 0, "salaryType": "연봉", "curren..
[JPA] entity에서 생성시간, 수정시간 반영하는 법
·Spring/JPA
생성할 때의 시간과 수정할 때의 시간을 저장하는 방법에는 뭐가 있을까? 가장 직관적인 방법은 생성할 때와 수정할 때마다 LocalDateTime.now()를 호출해서 직접 setter로 값을 넣어주는 방법이다. 하지만 매번 이런 작업을 하는 것은 여간 귀찮은 일이 아니다. 그래서 보통은 @CreatedDate와 @LastModifiedDate를 사용한다. CreatedDate : Entity가 생성되어 저장될 때 시간이 자동으로 저장 LastModifiedDate : 조회한 Entity의 값을 변경할 때 시간이 자동으로 저장 내가 사용하는 Entity에 직접 이 어노테이션을 붙이지 말고, 생성시간과 수정시간만 따로 BaseTimeEntity에 저장해 이 entity를 상속하도록 한다. BaseTimeEn..
[JPA] Querydsl에서 ElementCollection Projection 할 때 에러-org.hibernate.QueryException: not an entity
·Spring/JPA
Querydsl을 사용해서 Entity-> DTO에 Projections.constructor를 사용해 projection 하던 중 org.hibernate.QueryException: not an entity 문제가 발생 @Override public Page findAllTodosByCreatedDate(Pageable pageable){ List content=queryFactory .select(new QTodoDto_GetAllTodo(todo.todoId, todo.title, todo.description, todo.tags, todo.isCompleted, todo.createdAt, todo.updatedAt)) .where(isDeletedCheck()) .orderBy(todo.cre..
minsu20
'jpa' 태그의 글 목록