inblog logo
|
keepgoing
    SpringBoot

    [Springboot] blog v1 작성 중 발생한 에러 정리

    김호정's avatar
    김호정
    Aug 20, 2024
    [Springboot] blog v1 작성 중 발생한 에러 정리
    Contents
    1. TransactionRequiredException 2. No method or field with name3 삭제 매서드 테스트 할 때4. 테이블 create 이전에 insert 가 되었을 때5. View 에 데이터가 안 나올때
     

    1. TransactionRequiredException

    Repository의 save 매서드에 @Transactional 을 안 붙였더니
     
    notion image
     
    TransactionRequiredException 에러 발생
    notion image
     
    —> Write 에 해당하는 매서드 위에는 @Transactional 을 써주자 !
     
     

    2. No method or field with name

    notion image
    list.mustache
     
    반복문 안에 {{}} 로 다 수정하고 실행시켰는데,
     
    notion image
    title 필드를 찾을 수 없다고 뜸
     
    notion image
    Repository의 쿼리 뒷 부분에 Board.class 가 없어서 발생한 에러
     
    notion image
    조회 매서드는 쿼리 뒤에 이렇게 class를 명시해주어야 에러가 안난다.
     
     
    notion image
    테스트에서 size로 확인을 했을 때는 에러가 안났다.
     
    notion image
    list에 getTitle 로 확인하니 데이터가 ClassCastException 이 발생.
    Board 타입으로 잘 넘어온게 아니라는 것을 확인할 수 잇다.
     

    3 삭제 매서드 테스트 할 때

     
    notion image
     
    delete 하고 조회(findById) 해서 NoResultExcetion 인 걸 확인한다.
    일부러 에러를 발생시켜서 테스트 하는 것.
     

    4. 테이블 create 이전에 insert 가 되었을 때

     
    notion image
    dummy 데이터를 만들고 application.properties에 이렇게 설정해주고 실행시키면
    h2 데이터베이스에 더미데이터가 안들어간다.
     
    notion image
    위 에러가 발생하는데
     
    notion image
    구체적으로 이런내용이다.
     
    이때는
     
    notion image
     
    하이버네이트에 defer-datasource-initialization 설정을 추가해 주어야 한다.
    이렇게 해야 table 이 created 되고 나서 더미 데이터 insert 가 실행된다.
     

    5. View 에 데이터가 안 나올때

     
    mustache
     
    notion image
     
    mustache 에서 반복문과 session을
    사용하려면 application.properties 에 위 설정을 추가해주어야한다.
     
    그리고 다시 실행해보면 반복문 안의 그 request 객체에서 꺼낸 데이터가 잘 나올것.
     
    Share article
    Contents
    1. TransactionRequiredException 2. No method or field with name3 삭제 매서드 테스트 할 때4. 테이블 create 이전에 insert 가 되었을 때5. View 에 데이터가 안 나올때

    keepgoing

    RSS·Powered by Inblog