반응형

저번에는 홍길동이라는 이름으로 글쓴이로 작성되었다.

이제는 user와 board를 

일대 다로 하여 글을 쓰면 글쓴이로 등록되게 해보자 

 

우선 user_id를 조인한다고 생각하자 

 

그 후 모델 객체에 어노테이션을 추가하자 

 

import lombok.Data;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

@Entity
@Data
public class Board {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    @NotNull
    @Size(min = 2,max = 30 , message = "제목은 2자이상 30자 이하 입니다.")
    private String title;
    @NotNull
    @Size(min = 1, message = "내용을 입력해주세요.")
    private String content;

    @ManyToOne
    @JoinColumn(name = "user_id")
    private  User user;
}

그 후 글을 쓰려면 

인증정보를 가져와야한다. 

 

    @PostMapping("/form")
    public String postForm(@Valid Board board, BindingResult bindingResult , Authentication authentication){
//        vaildator.validate(board,bindingResult);
        if(bindingResult.hasErrors()){
            return "board/form";
        }
        String username = authentication.getName();
        boardService.save(username,board);
//        boardRepository.save(board);
        return "redirect:/board/list";
    }
}
String username = authentication.getName();

로 인증정보를 가져올 수있다. 

 

@Autowired
private BoardRepository boardRepository;

@Autowired
private UserRepository userRepository;
public Board save(String username , Board board){
 User user =  userRepository.findByUsername(username);
 board.setUser(user);

 return boardRepository.save(board);

}

그 후 서비스로 넘어와 save() 메소드를 작성 해준다. 

유저 레포지토리에서 유저를 먼저 찾아 board.setUser에 담아준다. 

그 후 save(board)를 해주면 된다. 

 

홍길동에서 변경된걸 볼 수 있다.

반응형

+ Recent posts