반응형
Entity
Entity에 언더바 ('_')를 집어넣으면 DAO에서 인식하지 못하는 오류가 발생한다.
@Entity
@Setter
@Getter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class SubscribeParty {
@ManyToOne
@JoinColumn(name="subscribe_num", nullable=false)
@OnDelete(action=OnDeleteAction.CASCADE) //만약 board에서 본인이삭제하면 걍 아예 안뜨는걸로
private SubscribeBoard subscribe_num;
private int point_basket;
private Date remain_month;
private int start_check;
}
DAO에서 사용할 부분 혹은 전체를 아래와 같이 변경해준다. 나는 조인하는 컬럼이어서 부모 테이블에서 이름 변경 후, 컬럼을 바꾼다는 의미의 어노테이션 @Column(name= "subscribe_num")으로 작성해주었다.
@Id
@SequenceGenerator(name="seq_subnum", sequenceName="seq_subnum", allocationSize=1, initialValue=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_subnum")
@Column(name = "subscribe_num")
private int subscribeNum; //게시글 번호
DAO는 자식 테이블에서 사용한다. 자식 테이블은 @JoinColumn으로 조인하는 컬럼의 이름을 가져오면 조인컬럼의 이름으로 저장된다.
@ManyToOne
@JoinColumn(name="subscribeNum", nullable=false)
@OnDelete(action=OnDeleteAction.CASCADE) //만약 board에서 본인이삭제하면 걍 아예 안뜨는걸로
private SubscribeBoard subscribeNum;
DAO/Repository
DAO에서 다음과 같이 사용하면 된다.
package com.example.demo.subscribeparty;
import java.util.ArrayList;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.example.demo.member.Member;
import com.example.demo.subscribeboard.SubscribeBoard;
@Repository
public interface SubscribePartyDao extends JpaRepository<SubscribeParty, Integer> {
ArrayList<SubscribeParty> findBySubscribeNum(SubscribeBoard subscribe_num);
ArrayList<SubscribeParty> findByEmail(Member email);
}
그러면 부모 테이블 SUBSCRIBE_BOARD와 자식 테이블 SUBSCRIBE_PARTY에 의도한 Subscribe_num으로 들어간 것을 확인할 수 있다.
참고 블로그
https://sunpil.tistory.com/302
반응형