본문 바로가기

Spring47

[Spring Data JPA] 좋아요 구현하기 번외 무한참조 오류 잡기 public class Likes { // N @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @JoinColumn(name="imageId") @ManyToOne private Image image; //1 @JsonIgnoreProperties({"images"}) @JoinColumn(name="userId") @ManyToOne private User user; private LocalDateTime createDate; @PrePersist // DB에 INSERT 되기 직전에 실행 public void createDate(){ this.createDate = LocalDateTime.now(); } } user의 .. 2023. 1. 13.
[Spring Data JPA]좋아요 구현하기 -4 Ajax 연결 후 마무리하기 마지막으로 좋아요 버튼 클릭시 likes 갯수를 동적 처리 해줘야 한다. function toggleLike(imageId) { let likeIcon = $(`#storyLikeIcon-${imageId}`); if (likeIcon.hasClass("far")) { //far -> 빈 상태 //좋아요 하겠다 $.ajax({ type:"post", url:`/api/image/${imageId}/likes`, dataType: "json" }).done(res =>{ // 좋아요 갯수 동적처리 let likeCountStr = $(`#storyLikeCount-${imageId}`).text(); console.log('좋아요 카운트', likeCountStr); let likeCount = Numbe.. 2023. 1. 13.
[Spring Data JPA] 좋아요 구현하기 -3 좋아요 뷰 렌더링, 카운트 렌더링 좋아요의 뷰를 구현하고자 한다. 빈 하트를 클릭하면 빨갛게 채워진 하트가 되어야 하고, 새로고침이나 로그인 시 이전에 좋아요 했던 인원들은 이미 빨갛게 채워진 하트가 되어있어야 한다. 즉 이전에 포토 스토리 뷰를 ajax로 렌더링 할 때, DB에서 좋아요의 현황도 가져와야 한다. story.js function storyLoad() { $.ajax({ type:"get", url:`/api/image?page=${page}`, dataType:"json" }).done(res =>{ console.log(res, "성공"); res.data.content.forEach((image) =>{ let storyItem = getStoryItem(image); $("#storyList").append(stor.. 2023. 1. 13.
[Spring Data JPA] 좋아요 구현하기 - 2 좋아요 api 구현 public interface LikesRepository extends JpaRepository { @Modifying @Query(value="INSERT INTO likes(imageId, userId, createDate) values(:imageId, :principalId, now())", nativeQuery = true) int mLikes(@Param("imageId") int imageId , @Param("principalId") int PrincipalId); @Modifying @Query(value="DELETE FROM likes WHERE imageId = :imageId AND userId = :principalId ", nativeQuery = true) int mUnLi.. 2023. 1. 12.