inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링과 JPA 기반 웹 애플리케이션 개발

모임 참가 신청 및 취소

참가 신청 로직과 비슷한 구조 제작 중 이슈가 생겨서 도움 요청드립니다.

298

송유진

작성한 질문수 11

0

안녕하세요. 강사님!
강의해주신 내용 중 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); // --> 에러 발생
		}

	}

jpa JPA springboot spring spring-boot thymeleaf java

답변 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