연관 관계 오류

박세건·2023년 3월 26일
0

오류 내용

object references an unsaved transient instance - save the transient instance before flushing

Entity에서 DTO로 변환하거나 DTO에서 Entity로 변환하는 과정에서 데이터가 손실되는 과정이 많고 @Transactional을 붙여주지 않아서 오류가 발생하는 경우가 많았다

데이터를 처음에 저장할때는 id 값이 정해지지않고 오기때문에 Entity 변환하는 과정에서는 id를 옮겨주는 과정이 필요하지않지만 update를 해줄때에는 id값 뿐만 아니라 모든 값이 옮겨주어야 한다. 따로 함수를 만들어주자!

 public static BoardEntity toBoardEntity(BoardDTO boardDTO, MemberEntity memberEntity) {
        BoardEntity boardEntity = new BoardEntity();
        boardEntity.setBoardWriter(boardDTO.getBoardWriter());
        boardEntity.setBoardTitle(boardDTO.getBoardTitle());
        boardEntity.setBoardContents(boardDTO.getBoardContents());
        boardEntity.setMemberEntity(memberEntity);
        boardEntity.setBoardHits(0);
        return boardEntity;
    }
public static BoardEntity updateToBoardEntity(BoardDTO boardDTO) {
        BoardEntity boardEntity = new BoardEntity();
        boardEntity.setId(boardDTO.getId());
        boardEntity.setBoardWriter(boardDTO.getBoardWriter());
        boardEntity.setBoardTitle(boardDTO.getBoardTitle());
        boardEntity.setBoardContents(boardDTO.getBoardContents());
        boardEntity.setMemberEntity(MemberEntity.toUpdateMemberEntity(boardDTO.getMemberDTO()));
        boardEntity.setBoardHits(boardDTO.getBoardHits());
        return boardEntity;
    }![](https://velog.velcdn.com/images/parksegun/post/abc55690-f592-481c-ae46-f5ac72e73833/image.jpg)

테스트 하는 과정을 거쳐서 올바르게 값이 옮겨지고 있는지 확인하는 버릇을 들여서 실수하지 않도록 하자

profile
멋있는 사람 - 일단 하자

0개의 댓글