반응형

SpringBoot를 이용해 개발을 하며 test 케이스를 작성하고 실행을 하였다

 

그리고 각 테스트 케이스 마다 영향을 주지 않기 위해

 

@After 어노테이션으로 각 repository.deleteAll() 메소드를 실행하도록 하였다.

 

그런데 ?? 

 

org.hibernate.exception.ConstraintViolationException: could not execute statement

이런 에러가 발생하였다.

 

https://stackoverflow.com/questions/49595852/deleteall-in-repository-randomly-causes-constraintviolationexception

 

deleteAll() in Repository randomly causes ConstraintViolationException

I have tests that do CRUD operations on an API. Before each test the test data in the API gets recreated. Meaning deleting all data in the database and inserting the test data again. public void

stackoverflow.com

여기에 어느정도 잘 나와있는 것 같다.

 

Hibernate를 사용하여 테스트 하는 환경에서 나타나는 일반적인 에러란다~

 

원인은 코드의 쿼리가 순차적으로 즉시 수행되는 것이 아니기 때문이다.

 

그래서 deleteAll() 대신 deleteAllInBatch()를 사용해서 해결했다.

 

deleteAll()은 delete를 여러번 실행하며 모두 삭제하는 것이고, deleteAllInBatch()는 한번의 실행으로 전부를 삭제하는 것이다.

반응형
반응형

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

+ Recent posts