게시글 삭제할때 삭제문구만 화면에 나타내고 싶었는데 자꾸 안에 내용물도 다같이 나오는 것이다ㅜㅜ

캡쳐는 다른 내용이지만 저 내용에서 값이 전부 'null'로 나오고 "msg"값만 "삭제 성공" 이라고 떴다.

마음에 안드는 것......

어떻게해야 코드를 고칠 수 있는지 생각이 안났다ㅜㅜ

[Service.java]

@Transactional
public String deleteAll(Long id, String password) {
Post post = postRepository.findById(id).orElseThrow(
() -> new IllegalArgumentException("게시글이 존재하지 않습니다.")
);

if (post.getPassword().equals(password)) {
postRepository.deleteById(id);
return "삭제 성공";
} else {
return "비밀번호가 다릅니다.";
}

[Controll.java]

@DeleteMapping("/post/{id}")
public String deleteAll(@PathVariable Long id, @RequestBody String password) {
return postService.deleteAll(id,password);
}
}

정말 간단하게 그냥 return 값을 다 지우고 String으로 받아주면 되는 것이었음;;;

나는 왜 복잡하고 어렵게 항상 생각해서 문제일까ㅋㅋㅋㅋㅋ

 

비밀번호가 다를때
비밀번호 체크 후 삭제 성공했을 때

 

아유 게비스콘!~ㅋㅋㅋㅋㅋㅋㅋㅋㅋ


[수정 시]

올바른 비밀번호 입력
비밀번호 틀렸을 때

[Service.java]

@Transactional
public PostResponseDto update(Long id, PostRequestDto postRequestDto) {

Post post = postRepository.findById(id).orElseThrow(
() -> new IllegalArgumentException("아이디가 존재하지 않습니다.")
);
PostResponseDto postResponseDto = new PostResponseDto(post);
if (!post.getPassword().equals(postRequestDto.getPassword())) {
postResponseDto.setMsg("업데이트 실패");
return postResponseDto;
}else {
post.update(postRequestDto);
postResponseDto = new PostResponseDto(post);// 위에 post는 업데이트가 안되었기 때문에
postResponseDto.setMsg("업데이트 성공"); // 74,75번줄 순서 중요!!
return postResponseDto;
}
}

[Controll.java]

@PutMapping("/put/{id}")
public PostResponseDto updatePost(@PathVariable Long id, @RequestBody PostRequestDto postRequestDto) { //@RequestBody : http의 요청이 그대로 적힘
return postService.update(id,postRequestDto);
}

여기서 중요한 것은 postResponseDto = new PostResponseDto(post); 와

postResponseDto.setMsg("업데이트 성공"); 부분이 순서가 달라지만 업데이트 성공 메세지가 'Null'로 뜬다는 것,,

이미 postResponseDto을 메세지로 넣어주기때문에 달라질 수 있으므로 순서에 유의할 것!!!

<Main.java>

package com.example.hanghae_blog;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@EnableJpaAuditing //Jpa Auditing 활성화
@SpringBootApplication //spring data jpa에서 audit은 시간을 자동으로 넣어주는 기능
public class HanghaeBlogApplication {

public static void main(String[] args) {
SpringApplication.run(HanghaeBlogApplication.class, args);
}

}

 

<BaseTimeEntity.java>

package com.example.hanghae_blog.entity;

import jakarta.persistence.EntityListeners;
import jakarta.persistence.MappedSuperclass;
import lombok.Getter;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import java.time.LocalDateTime;

@Getter
@MappedSuperclass // Entity 클래스가 BaseTimeEntity를 상속받을 때, createDate, modifiedDate를 인식할 수 있도록 하는 설정
@EntityListeners(AuditingEntityListener.class) // 자동으로 값을 넣어주도록 하는 annotation
public abstract class BaseTimeEntity {
@CreatedDate // 데이터 생성할 때 시간 자동 생성
private LocalDateTime createdDate;

@LastModifiedDate // 데이터 수정할 때 시간 자동 수정
private LocalDateTime modifiedDate;
}

자동날짜를 위한 Entity 만들어서 그안에 넣어주고

<Post.java>

@Entity
@Getter
@NoArgsConstructor

public class Post extends BaseTimeEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO) // id 자동 증가
private Long id;
@Column(nullable = false) // 반드시 적어라
private String username;
@Column(nullable = false)
private String title;
@Column(nullable = false)
private String content;
@Column(nullable = false)
private String password;


public Post(PostRequestDto postRequestDto) {
this.username = postRequestDto.getUsername();
this.title = postRequestDto.getTitle();
this.content = postRequestDto.getContent();
this.password = postRequestDto.getPassword();
}

}

Post 에 extends해주기 까지 완료했는데...

코드를 잘 적었다 생각했는데 날짜가 왜 자꾸 null인거야ㅠㅠㅠㅠㅠㅠㅠ

구글링해도 다 똑같이 했는데 대체 뭐가 문젠지 1도 모르겠읍니다 !!!!!!!!!!!!!!!!!!!!!!!!!

 

아직도 null 나오는중ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ미쳐버리겠음

2시간째 답을 못찾는 중 ^^


GPT 친구가 이거 설정해야한다고 해서 저것도 추가해서 설정해봄

spring.data.jpa.repositories.enabled=true
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.jdbc.time_zone=Asia/Seoul

응 실패

 


와 진짜 똥멍청이 같은 일이 있다니;;;;;

포스트맨이 아니라 h2-console창으로 확인하니 너무나도 잘들어오고 있었음;;;;;

너무 소름돋는다....

나는 왜 이것을 생각못하고 포스트맨에 절절 매며 하루를 날려버렸을까..........

 

덕분에 강의도 2번씩 돌려보고 더 개념을 잘챙길 수 있었던거같다^^^^^^^^^^^^^^^

근데 포스트맨에는 왜 null로 나왔는지는 모르겠네....흠...

+ Recent posts