글 작성 시 작성자(user객체) 등록
글 작성시간 postman으로 post요청 시 시간 기록
postman에서 post를 보냈을 때 그 보낸 시점이 기록되기를 바랬다
DTO클래스에 있는 Localdatetime타입으로 선언한 필드 위에 @CreatedDate를 붙여주니 되었다
postman으로 데드라인 날짜-시간 보내기
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") //데드라인을 어떤형식으로 받을지 명시
private LocalDateTime deadline;
git 연결 주소 바꾸기
git remote -v로 현재 어디에 연결되어있는지 체크
git remote set-url origin 원하는 주소
하면 연결주소가 바뀌게 된다
public class Tasknotice_Tag{
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "tag_id")
private Tag tag;
}
이런 상황에서 Tasknotice_Tag 안에 있는 여러 Tag객체들이 들어가야 하는상황이라서
public class Tasknotice_Tag{
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "tag_id")
private List<Tag> tag;
}
로 바꿔서 한 번 테스트 -> error 실패임
애초에 그러지 말고 위에거 원래대로 돌려놓고 Tasknotice_Tag 객체를 여러개 만들어서 Tasknotice id가 1이 있고 Tag id가 1 2 3 있다고 하면
Tasknotice_Tag id 1
Tasknotice id 1
Tag id 1
Tasknotice_Tag id 2
Tasknotice id 1
Tag id 2
Tasknotice_Tag id 3
Tasknotice id 1
Tag id 3
이런느낌으로 그냥 하나하나 만들어주는게 깔끔하다고 생각
@PostMapping("create/tasknotice")
public CreateTasknoticeResponse createTasknotice(@RequestBody @Valid CreateTasknoticeRequest request){
Tasknotice tasknotice = new Tasknotice();
//tag_id만 리스트로 받고
//태그버튼을 누르면 tasknotice_tag객체가 생성되게 하고
tasknotice.setUser(userService.findOne(request.getUser_id()));
tasknotice.setDate(LocalDateTime.now()); //생성시점
tasknotice.setDeadline(request.getDeadline()); // postman으로 날짜받는거
tasknotice.setTarget(request.getTarget());
tasknotice.setTitle(request.getTitle());
tasknotice.setExplanation(request.getExplanation());
Long tn_id = tasknoticeService.save(tasknotice);
//이러면 이제 과제공지글을 생성이 된거고 이 때 request로 tag_id받고 아래에 tasknoticetag로직 추가
//request로 tag_id를 어떻게받을까 List로 받아서 for문으로 돌리자
for(Long e : request.tag_idList){
Tasknotice_Tag tasknotice_tag = new Tasknotice_Tag();
tasknotice_tag.setTasknotice(tasknoticeService.findOne(tn_id));
tasknotice_tag.setTag(tagService.findOne(e));
tasknotice_tagService.save(tasknotice_tag);
}
return new CreateTasknoticeResponse(tn_id); // new 조심
}
이렇게 하고 돌려보니까 아래와 같이 제대로 된것을 확인!
트랜잭션을 커밋할 때 자동으로 플러시가 발생합니다
그리고 트랜잭션의 범위를 넘어서게 되면 자동으로 영속성 컨텍스트가 종료됩니다.
따라서 이런 부분을 수동으로 하는 일은 거의 없습니다.
em.find로 호출하면 DB에서 꺼내서 em으로 가져와 관리하는듯 하다
따라서 이상태에서 em.remove를 해준다면 삭제를 할 수 있는듯 하다