Spring Boot/Restful-Api + Spring Boot
(Spring Boot JPA)ManyToOne 일대다 매핑을 이용한 게시글 쓰기
seogi8574
2022. 6. 19. 20:17
반응형
저번에는 홍길동이라는 이름으로 글쓴이로 작성되었다.
이제는 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)를 해주면 된다.
홍길동에서 변경된걸 볼 수 있다.
반응형