model, controller에 저장할때, axios로 값 보낼때 순서대로 예시가 나와있다.
@Entity
@Getter
@Setter
public class Wish {
@Id
@Column(name = "wish_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ElementCollection
@CollectionTable(name="content_genres")
private List<Genre> content_genres = new ArrayList<>();
@Embeddable
@Getter
@Setter
public static class Genre {
@Column(name = "genre_id")
private int id;
@Column(name = "genre_name")
private String name;
public Genre() {}
public Genre(int id, String name) {
this.id = id;
this.name = name;
}
}
}
@PostMapping("/dataSave")
public Wish createWish(@RequestBody Wish wish) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
String username = authentication.getName();
if (wish.getContent_genres() == null) {
wish.setContent_genres(new ArrayList<>());
}
List<Wish.Genre> genres = new ArrayList<>();
for (Wish.Genre genre : wish.getContent_genres()) {
Wish.Genre newGenre = new Wish.Genre();
newGenre.setId(genre.getId());
newGenre.setName(genre.getName());
genres.add(newGenre);
}
wish.setContent_genres(genres);
wish.setUser_id(username);
return wishRepository.save(wish);
}
const handleFalseWishIcon = (): void => {
setWishIcon((wishIcon: boolean) => !wishIcon);
const genresArray = (tvDetail?.genres || []).map((genre: any) => {
if (genre.id && genre.name) {
return { id: genre.id, name: genre.name };
}
return null;
}).filter((genre: any) => genre !== null);
axios.post("/wish/dataSave",{
removed_at: null,
content_id: tvDetail.id,
content_genres: genresArray,
content_title: tvDetail.name,
content_poster: tvDetail.poster_path
}).then((response) => {
console.log(response.data)
})
};