문제 상황현재 Grammar와 GrammarBook를 N:1 양방향 연관관계로 설정한 상태입니다. 그래서 GrammarBook에 다음과 같이 mappedBy 설정으로 GrammarBook은 연관관계의 주인이 아님을 명시해뒀습니다.@OneToMany(mappedBy = "grammarBook", cascade = CascadeType.ALL) @OrderColumn(name = "id") private List grammars = new ArrayList();그리고 GrammarBook엔티티 객체에서 grammars로 size()를 호출하니 수많은 Grammar엔티티 값과 함께 수많은 null값이 채워져 반환되었습니다. [null, null, null, null, null, null, null, null,..
springboot
UserGrammarStatus와 SiteUser는 N : 1 단방향 연관 관계를 맺고 있습니다.UserGrammarStatus 엔티티에서 referencedColumnName = "user_name"를 지정해주어 SiteUser 테이블의 userName 컬럼을 참조하게 했습니다.//UserGrammarStatus ... @ManyToOne @JoinColumn(name = "user_name", referencedColumnName = "user_name") private SiteUser user; ...그리고 userName값으로 UserGrammarStatus를 조회하는 JPQL을 직접 작성했습니다.//UserGrammarStatusRepository ... @Query("select ugs fro..
문제 상황 GrammarBook 엔티티 한 개를 조회할때 Grammar를 fetch join하고 Grammar안에서 GrammarExample도 fetch join하는 한 방 쿼리를 JPQL로 작성했습니다. //GrammarBookRepository.java @Query("select gb from GrammarBook gb join fetch gb.grammars g join fetch g.examples where gb.id = :id") Optional findGrammarBookById(@Param("id") Long id); 위 JPQL을 사용한 서비스 메서드를 테스트했더니 org.hibernate.loader.MultipleBagFetchException: cannot simultaneousl..
리액트와 스프링부트를 통합 빌드했기 때문에 스프링부트 테스트 시 항상 리액트 앱을 빌드했습니다. 이때문에 빌드 시간이 너무 오래 걸려 간단한 테스트에도 시간을 많이 뺐겼습니다. 그래서 build.gradle에 테스트할때만 리액트 앱을 빌드하지 않도록 설정을 추가했습니다.//build.gradle ... //테스트할때만 리액트 앱 빌드 안함 def skipReactBuild = project.hasProperty('skipReactBuild') tasks.matching { it.name in ['installReact', 'buildReact', 'copyReactBuildFiles'] }.configureEach { onlyIf { !project.hasProperty('skipReactBuild') ..

무슨 오류인가?리액트가 통합된 스프링부트 애플리케이션을 실행하고, 리액트에서 설정한 Route로 웹페이지 이동 후, 새로고침하면 Whitelabel Error Page가 뜸아래 오류는 http://localhost:8080/grammar로 접속후 새로고침시 나타난 오류Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Fri Jan 19 00:01:16 KST 2024 There was an unexpected error (type=Not Found, status=404). No static resource grammar. ...오류 발생 원인 분석개발 단..

usernameParameter( input태그의 name속성 ) passwordParameter( input태그의 name속성 ) 를 제대로 넣어줬는지 확인하자 spring boot 3.1.4는 spring security 6.1.4를 지원하는데, SecurityFilterChain에 deprecated 메서드들이 많아서 SecurityConfig를 수정했다. @RequiredArgsConstructor @Configuration @EnableWebSecurity public class WebSecurityConfig { @Bean public WebSecurityCustomizer configure() { return (web -> web.ignoring() .requestMatchers(toH2Co..

JUnit4와 JUnit5는 테스트 코드가 조금 다르다. 의존성 주입은 Tire인터페이스를 구현한 KoreaTire, AmericaTire클래스를 Car클래스에 주입하는데, xml파일에서 Car의 에 를 추가해 tire를 받게 했다. xml 그리고 JUnit으로 테스트를 해봤더니 org.junit.runners.model.InvalidTestClassError가 떴다. 왜 그런지 검색해보니 JUnit4와 JUnit5의 테스트 코드가 조금 달랐기 때문이다. JUnit4 package expert003; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowir..