NoSuchMethodException - Querydsl에서 생성자 예외가 발생할 때 해결 방법
·
Spring Data
QueryDSL에서 생성자 예외 java.lang.NoSuchMethodException: ...() 프로젝트 도중 JPA 동적쿼리로 페이징 처리를 했어야 했기 때문에 QueryDsl을 사용해야 했습니다. 쿼리문을 쏘고 나서, 리턴 타입을 반환할 때 Entity보단 DTO가 반환되기를 원했고, 그래서 쿼리문에 필드 Projection으로 DTO를 반환하도록 했습니다. 그러던 중, 위와 같은 예외가 터졌습니다. @Override public Page findAllByMemberId(Long memberId, OrderSearchCond condition, Pageable pageable) { List content = queryFactory .select(fields(OrderListResponse.cla..
HibernateException 예외 해결 - JPA 연관관계 매핑에서 발생한 문제 해결 방법
·
Spring Data
스프링부트 프로젝트 도중 JPA 사용 중에 위와 같은 예외가 발생했습니다. org.hibernate.HibernateException: More than one row with the given identifier was found: 1, for class 결론적으로 연관관계 매핑을 잘못했었고, 연관관계를 수정하니 해결했습니다. 그럼 어떤 것이 문제였는지 알려드리겠습니다. 저는, 장바구니를 구현했습니다. 장바구니와 회원의 관계는 1:1 매핑으로, 장바구니와 상품과의 관계는 多:1 관계로 매핑했습니다. 제 생각으로는 회원 A는 하나의 장바구니만 갖을 수 있고, 장바구니도 A와 B의 공동 장바구니란 개념은 없으며, A만의 장바구니 B만의 장바구니만 갖을 수 있다 생각해서였습니다. 또 회원 엔티티는 회원에 관..
Entity는 기본형 타입과 래퍼클래스 중 어떤 것을 사용하는가?
·
Spring Data
엔티티의 필드는 어떻게 선언해야 하나? 엔티티에서 필드를 선언할 때 기본형으로 선언해야하는지, 래퍼 클래스(Wrapper Class)로 선언해야 하는지 고민될 때가 있습니다. 저는 @Id가 매핑된 필드에는 무조건 참조형 타입을 선언하길래 왜 기본형을 사용하지 않는지 고민했었는데요? 아래 사실들을 알면 납득되실 겁니다. @Id @GeneratedValue private Long id; 래퍼 클래스는 Null을 허용한다. Integer, Long, String, Boolean, Double 등등... 래퍼 클래스는 기본형과 달리 Null을 허용합니다. 반대로 기본형 타입은 Null을 허용하지 않죠. 이 둘간의 차이점을 바탕으로 생각을 하셔야 합니다. 엔티티의 본질은 무엇인가? 엔티티는 하나의 정체성을 가진 ..
자바에서 상수 정의하기: 추상 클래스와 인터페이스의 활용
·
Java
자바에서 상수를 정의하는 방법은 변수 앞에 제어자 public static final를 붙이면 선언이 가능합니다. 이때 객체지향적으로 설계하기 위해서는 자주 사용하는 상수를 따로 클래스를 만들어 줘야 합니다. 상수들을 정의한 클래스에 가장 중요한 부분은 무엇일까요? 바로 해당 클래스는 생성자로 생성되어서는 안 된다는 것입니다. 때문에 상수에 관련된 클래스를 정의할 때 추상클래스(abstract class)나 인터페이스(interface)가 자주 쓰입니다. 이 포스팅에서는 왜 두 개가 자주 쓰이는지 차근차근 알아보고자 합니다. 1. 추상클래스의 경우추상 클래스는 구현체가 아니기 때문에 생성자를 통해 생성될 수 없습니다. 이것은 생성자로 생성되어서는 안 된다는 위의 조건에 부합합니다. 물론 추상클래스 말고,..
코더 제이콥
'분류 전체보기' 카테고리의 글 목록 (4 Page)