오류 및 문제점
1. Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements
- 문제점: 연관관계를 수정하며 잘못된 매핑을 했다.
- 해결 방안: @OneToMany의 값을 List로 받는다.
진행 상황
1. 카드 ERD 변경
- 할인 정보를 더 구체적으로 넣을 수 있도록 테이블 수정
2. 댓글 등록 response body 변경
{
"snsNo": 87,
"replyNo": 117,
"replyContent": "댓글내용이다",
"replyRegdate": "2023-06-16T06:33:46.407+00:00",
"replyUser": {
"userNo": 1,
"userNick": "사과1",
"userProfile": "https://이미지주소"
}
}
3. 경비 등록
@PostMapping("/register")
public String ocr(@RequestBody ObjectNode obj) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
Long tripNo = obj.get("tripNo").asLong();
Long snsNo = obj.get("snsNo").asLong();
Long cardNo = obj.get("cardNo").asLong();
ExpVO exp = mapper.treeToValue(obj.get("exp"), ExpVO.class);
trepo.findById(tripNo).ifPresent(trip -> exp.setTrip(trip));
srepo.findById(snsNo).ifPresent(sns -> exp.setSns(sns));
crepo.findById(cardNo).ifPresent(card -> exp.setCard(card));
erepo.save(exp);
return "OK";
}
4. 모든 카드 조회
5. 연결된 경비가 없는 SNS 게시글 조회, 연결된 SNS 게시글이 없는 경비 조회 (경비, 게시글 작성, 수정을 위함)
@PostMapping("/list/{tripNo}")
public List<JSONObject> postSnsList(@PathVariable Long tripNo) {
TripVO trip = trepo.findById(tripNo).orElse(null);
List<SnsVO> tmpSnsList = srepo.findBySnsAndExpNull(trip);
List<JSONObject> snsList = new ArrayList<>();
tmpSnsList.forEach(sns -> {
JSONObject obj = new JSONObject();
obj.put("snsNo", sns.getSnsNo());
obj.put("snsTitle", sns.getSnsTitle());
snsList.add(obj);
});
return snsList;
}
6. 게시글 조회
- 현재는 모든 게시글을 가져옴
- 로그인 전: 전체 공개인 게시글
- 로그인 후: 내 게시글 + 팔로우 게시글
- 을 가져올 수 있도록 수정 필요
@GetMapping("/list")
public List<SnsDto> getSnsList(HttpServletRequest request) {
String obj = (String)request.getAttribute("Authorization");
List<SnsVO> tmpSnsList = srepo.findAll();
JSONObject snsObj = new JSONObject();
List<SnsDto> snsList = new ArrayList<>();
tmpSnsList.forEach(tmpSns -> {
SnsDto sns = SnsDto.builder()
.tripNo(tmpSns.getSns().getTripNo())
.snsNo(tmpSns.getSnsNo())
.snsTitle(tmpSns.getSnsTitle())
.snsContent(tmpSns.getSnsContent())
.snsPhoto(getSnsImages(tmpSns.getSnsPhoto()))
.snsRegdate(tmpSns.getSnsRegdate())
.snsUser(getAnyUser(tmpSns.getSns().getUser().getUserNo()))
.reply(getSnsReply(tmpSns))
.heart(getSnsHeart(tmpSns, tmpSns.getSns().getUser().getUserNo()))
.hashtag(getSnsHashtag(tmpSns))
.build();
if(tmpSns.getExp() != null) {
sns.setExpNo(tmpSns.getExp().getExpNo());
}
snsList.add(sns);
});
return snsList;
}
참고 자료