참가 신청 로직과 비슷한 구조 제작 중 이슈가 생겨서 도움 요청드립니다.
298
작성한 질문수 11
안녕하세요. 강사님!
강의해주신 내용 중 Event-Enrollment 연관매핑되어 참가신청하는 로직을 참고하여 개발중에 있습니다.
저는 Shop과 Product 를 Event, Enrollment와 동일한 구조로 개발하였는데, Shop 엔티티에 매핑되어있는 products 에 add할 때 NullPointerException 을 발생시키네요.
products에 new ArrayList<>(); 로 초기화도 시켜두었는데 에러 나는 이유가 무엇일지 알려주시면 감사하겠습니다!
메인Runner 클래스에서 테스트한건데 그부분이 문제일까요?..
<강의 내 Event, Enrollment 관련 코드>
-- Event.java
@OneToMany(mappedBy = "event")
@OrderBy("createdDate")
private List<Enrollment> enrollments = new ArrayList<>();
// 생략
public void addEnrollment(Enrollment enrollment) {
this.enrollments.add(enrollment);
enrollment.setEvent(this);
}
-- Enrollment.java
@ManyToOne
private Event event;
-- EventService.java
public void newEnrollment(Account account, Event event) {
if(enrollmentRepository.existsByEventAndAccount(event, account)) {
throw new IllegalArgumentException("이미 참가 신청된 계정입니다.");
}
Enrollment enrollment = Enrollment.builder().account(account).build();
enrollmentRepository.save(enrollment);
event.addEnrollment(enrollment);
}
<제 코드>
-- Shop.java
public class Shop extends CommonField {
@Id @GeneratedValue
private Long id;
private String shopName;
private String siteUrl;
@OneToMany(mappedBy = "shop")
@OrderBy("createdDate")
private List<Product> products = new ArrayList<>();
public void addProduct(Product product) {
this.products.add(product); // --> this.products에서 NullPointerException 발생!!
product.setShop(this);
}
}
-- Product.java
public class Product extends CommonField {
@Id
@GeneratedValue
private Long id;
@Column(unique = true)
private String productId;
private String title;
private String price;
private String thumbUrl;
private String detailUrl;
@ManyToOne
private Shop shop;
}
-- 테스트 코드
private void CrawlerTest() throws IOException {
// 쇼핑몰 생성
Shop shop = Shop.builder().shopName("미스터스트리트").siteUrl("https://mr-s.co.kr/").build();
shopRepository.save(shop);
Shop newshop = shopRepository.findByShopName(shop.getShopName());
// 최신 상품 목록 크롤링
Crawler crawler = new mrStreetCrawler(shop.getSiteUrl());
List<Product> products = crawler.run();
// 연관관계 설정
for(Product product : products) {
product = productRepository.save(product);
newshop.addProduct(product); // --> 에러 발생
}
}
답변 1
0
음 글쎄요. 디버거를 사용해서 해당 부분에서 어떤 인스턴스가 왜 null인지 확인해 보셔야겠네요. list는 초기화를 하셨으니 null이 아닐것 같은데 그럼 혹시 product가 null인건 아닌가 싶네요.
Study 개설하는 로직에 대해서 궁금점이 있습니다.
0
53
1
앱 재시작 후 회원가입
0
99
1
app.host 관련 질문이 있습니다
0
95
1
강의 버전 정보
0
122
1
event, study 참조
0
217
2
비밀번호 변경 로직 질문있습니다.
0
133
1
프로필 수정 처리 merge 질문입니다.
0
104
1
회원가입 성공 후 redirect이동시 권한 질문
0
489
3
HtmlEmailService 개발하다 생긴 의문입니다
0
246
2
postgreSql 연결하여 JPA 를 통해 테이블 생성시 ZONE 테이블 생성에서 에러가 납니다
0
428
2
수업질문 [긴급] 로그인안되는 문제 말씀해주시는 부분 반영해서 최종 질문드립니다
0
258
2
[긴급-재업로드]수업질문 로그인 안 되는 문제
0
233
1
[긴급] 로그인해도 네비게이션 바가 안 바뀌고 있습니다!! 로그인이 안 됩니다 도와주세요
0
275
1
cropper 오류 문제로 질문드립니다..
0
284
2
authentication관련 질문...
0
493
2
모임참가 취소 할때 로직 질문
0
348
3
안녕하세요 기선님 질문이있습니다..
0
227
1
HTML코드 및 강의 중간자료들
0
677
3
springSecurity
0
518
2
버전 질문입니다.
0
299
1
부트스트랩, css
0
350
2
영속성 컨텍스트 질문
0
245
2
다시 강의를 보니 드는생각..
0
348
2
5:50에 나오는 HTML코드는 어디서 찾을 수 있나여?
0
309
1





