package com.pyo.pyostagram.domain.subscribe;
import com.pyo.pyostagram.domain.user.User;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
@Entity
@Table(
uniqueConstraints = {
@UniqueConstraint(
name = "subscribe_uk",
columnNames = {"fromUserId", "toUserId"}
)
}
)
public class Subscribe {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@JoinColumn(name = "fromUserId") //카멜 표기법으로 다시만들어짐
@ManyToOne
private User fromUser;
@JoinColumn(name = "toUserId")
@ManyToOne
private User toUser;
private LocalDateTime createDate;
@PrePersist
public void createDate() {
this.createDate = LocalDateTime.now();
}
}
필요한것 : 아이디값, 구독하는 유저, 구독 받는유저, 시간
왜 굳이 private User fromUserId
private User toUserId 로 안하고
@JoinColumn (name ="") 사용했는지 ?
->
@JoinColumn 으로 네임을 지정 안해주면
fromUserId_id 이런식으로 연관관계의 주인을 따라가는 네이밍을 가짐,
본인은 카멜식 사용하기 위해 @JoinColumn 넣음
@PrePersist 로 insert 전에 시간 생성하도록 하였고
fromUserId 와 toUserId는 User에서 포린키로 가져와야 하는것이기 때문에
@JoinColumn을 사용.
@Table 의 uniqueConstraints 의 경우 fromuserId와 toUserId를 유니크 걸어주기 위해 적은것, 외울필욘 없다
그 후 repository 만들기
import org.springframework.data.jpa.repository.JpaRepository;
public interface SubscribeRepository extends JpaRepository<Subscribe , Integer> {
}
'Spring > JPA + Security' 카테고리의 다른 글
[Spring Data JPA] JPA를 사용한 구독하기 3 - 구독하기 로직 구현하기 (0) | 2023.01.08 |
---|---|
[Spring Data JPA] JPA를 사용한 구독하기 2 - 네이티브 쿼리 짜기 (0) | 2023.01.08 |
[Spring] 회원 수정 에서 유효성 처리 하기 -2 DB에 없는 값 (0) | 2023.01.08 |
[Spring] 회원 수정 에서 유효성 처리하기 - 2 Exception Handler 적용 (0) | 2023.01.07 |
[Spring Data JPA] 데이터 수정하기 + AJAX 포함 예제 (0) | 2023.01.07 |
댓글