외래키인 id로 DAO에서 findBy하고 싶을때는 어떻게 할까?
외래키 column은 type이 Entity여서 일반 값으로는 작동되지 않았다.
* Item Entity
@Entity //엔티티
@Table(name = "item")
public class Item {
//핵심 column만 남김
@Id //primary key
@GeneratedValue(strategy = GenerationType.IDENTITY) //auto_increment
@Column(name = "item_id")
private Long itemId; //상품 고유 id
@Column(columnDefinition = "text[]")
@Type(type = "mirim.itshow.kiru.entity.hibernatesetting.CustomStringArrayType")
private String[] clothSize; //옷 사이즈
@ManyToOne
@JoinColumn(name = "category")
private Category category; //카테고리 id
}
Category가 외래키이기 때문에 Category Entity 타입이다.
* Category Entity
@Entity //엔티티
@Table(name = "category")
public class Category {
@Id //primary key
@Column
private Long categoryId; //카테고리 고유 id
private Long idParent; //부모 카테고리 id
@Column(nullable = false, length = 10)
private String title; //카테고리 이름
//생성자 생략
}
ItemRepository에서 Category로 findBy를 할 거다
public interface ItemRepository extends JpaRepository<Item, Long> {
List<Item> findByCategory_CategoryId(Long categoryId);
}
규칙이 있다!!!!!!
findBy테이블이름_열이름(열데이터타입 매개변수명);
단, 테이블이름이나 열이름이나 원래 이름과 상관 없이 대문자로 시작해야 한다.
카테고리 테이블을 다시 살펴보면
@Id //primary key
@Column
private Long categoryId; //카테고리 고유 id
테이블 이름이 Category이고 기준이 될 열 이름이 categoryId이기 때문에
findByCategory_CategoryId()가 된다
이 메서드를 호출할때에는 findBy의 기준이 될 column만 받으면 된다~!!
'스프링 독학 여정' 카테고리의 다른 글
HTTP header, body란? (0) | 2023.05.31 |
---|---|
JPA 배열 column 만들기 (0) | 2023.05.18 |
스프링 입문 독학 :: day1 - 1.프로젝트 생성 (0) | 2023.01.03 |