반응형

Springboot에 댓글 기능을 구현하던 중 이유모를 ? 에러가 발생했다.

 

위와 같이 Query 문을 작성 했는데 

QuerySyntaxException: comments is not mapped [SELECT c FROM comments c ORDER BY c.id DESC]

이런 에러가 발생했다...

 

구글링을 했다... 흑...

 

(http://stackoverflow.com/questions/8230309/jpa-mapping-querysyntaxexception-foobar-is-not-mapped)

스택오버플로우에 명확한 해결법이 나와있었다 ~~ 호우!

 

Query문을 작성할 때는 Table의 대소문자를 주의해야 한다!!

 

즉 도메인 클래스를 작성할 때 @Table(name="comments") 라고 하더라도 

 

도메인 클래스의 클래스명을 테이블명으로 작성해야 한다는 것이다!!

 

즉 나는 Select c FROM Comments 로 했어야 했다.

 

 

반응형

'Spring Framework' 카테고리의 다른 글

JPA 기본 사용법  (0) 2019.06.24
JPA(Java Persistance API) 개념  (0) 2019.06.24
(STS) Spring Framework-Lombok 설치  (0) 2019.06.23
Spring MVC 라이프 사이클  (0) 2019.06.20
반응형

SpringBoot 프로젝트는 자동으로 프로젝트에 properties 파일이 생성되고 

 

이 파일로 local , real ,test 환경을 셋팅할 수 있다.

 

근데 test/resources/ 폴더에 properties 파일 또는 yml 파일이 없으면 자동으로

 

main/resources/ 폴더에 있는 properties 또는 yml 파일을 참조하게 된다.

 

실제 운영하는 코드와 테스트 환경을 분리해야 되는게 맞기 때문에 설정 파일을 따로 작성해야 된다.

 

그래서 test/resources/ 에 applicationt.yml을 작성 했다.

 

그런데 Junit 테스트를 실행하면 자꾸 main/resources/에 있는 설정 파일을 참조하는 것이다...

 

구글링을 통해 여러방법을 시도해 보았지만 안됐고..

 

@TestPropertySource("classpath:applicationtest.yml")

 

테스트 클래스에 위에 코드를 작성하니 정상적으로 참조가 됐다..

 

다른 분들은 자동으로 test/resources/*.properties 를 참조하게 된다던데 ㅜ ㅜ 왜 난 안될까... 

 


위에 썼던 것대로 하면 안된다 .. . . . .

 

그래서 별 xx을 다해봤고 방법은

application-local.yml -- 로컬 PC

application-dev.yml -- 개발서버

application-uat.yml -- UAT(Staging)

application-live.yml -- Live(운영)

이런식으로 나누어서 사용한단다...

 

그래성 @TestPropertySource(properties = { "spring.config.location=classpath:application-test.yml" })

이런식으로 참조한단다..

 

나는 이렇게 했을 때 

@Test
public void Profile확인() {
   //when
   String profile =this.restTemplate.getForObject("/profile",String.class);

   //then
   assertThat(profile).isEqualTo("local");
}

이 코드를 실행하면 UnsatisfiedDependencyException 이런 오류를 던진다.. 

는 @SpringBootTest(webEnvironment =WebEnvironment.RANDOM_PORT)

이 webEnvironment를 설정 안해줘서 글탕.. 

 

결론

@TestPropertySource(properties = { "spring.config.location=classpath:application-test.yml" })

로 다른 yml을 참조하도록

반응형

+ Recent posts