포토그램 구독하기
domain 폴더안에 subscribe 폴더 생성 후 Subscribe.java 생성
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
public class Subscribe {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
}
Java
복사
전에 User.java에 있던거 참고해서 넣어주면된다
@ManyToOne
private User fromUser; //구독하는 유저
@ManyToOne
private User toUser; //구독받는 유저
Java
복사
User : 구독하기가 1: N 관계이므로 User가 1이라 ManyToOne
저장하고 서버 실행하면 자동으로 테이블을 생성해준다.
DBeaver가서 봐도 생성된걸 볼 수 있다.
근데 보면 _언더바가 붙은 상태로 컬럼명이 지어져서
@JoinColumn으로 수정해주자.
@JoinColumn(name="formUserId")
@ManyToOne
private User formUser; //구독하는 유저
@JoinColumn(name="toUserId")
@ManyToOne
private User toUser; //구독받는 유저
Java
복사
잘만들어졌는데 이전 컬럼이 남아있다.
이럴 땐 application.yml에서 create로 저장 후 다시 update로 변경해줘서
테이블을 날렸다가 생성하게 해주자.
구독하는 1번 유저가 구독받는 유저2번을 이미 구독한 상태에서 또 구독한 데이터를 넣으면 충돌난다.
그래서 구독받는 유저 와 구독하는 유저는 유니크 해야한다.
Subscribe.java에
@Table 어노테이션을 이용해서 두개의 유니크를 복합적으로 거는 경우에는 @UniqueConstraint 이용 해준다.
@Table(
uniqueConstraints = {
@UniqueConstraint(
name="subscribe_uk",
columnNames = {"fromrUserId", "toUserId"}
)
}
)
Java
복사
subscribe폴더 안에 SubscribeRepository.java 인터페이스를 생성
package com.cos.photogramstart.domain.subscribe;
import org.springframework.data.jpa.repository.JpaRepository;
public interface SubscribeRepository extends JpaRepository<Subscribe, Integer>{
}
Java
복사