티스토리 뷰
@GeneratedValue(strategy = GenerationType.IDENTITY)란?
ForeignKey 설정하기
아래와 같이 테이블이 있을때 코드로 설정하는 방법
- Menu.class에 Foreign Key 설정
@ManyToOne
@JoinColumn(name = "storeId", referencedColumnName = "storeId", foreignKey = @ForeignKey(name = "fk_menu_store"))
private Store store;
@ManyToOne
@JoinColumn(name = "foodId", referencedColumnName = "id", foreignKey = @ForeignKey(name = "fk_menu_food"))
private Food food;
2.Sql 작성
CREATE TABLE Menus (
menuId BIGINT(20) NOT NULL,
storeId BIGINT(20) NOT NULL,
foodId BIGINT(20) NOT NULL,
PRIMARY KEY (menuId),
FOREIGN KEY (storeId) REFERENCES Stores(storeId),
FOREIGN KEY (foodId) REFERENCES Foods(id)
);
3.주의사항
나의 경우 Food를 id라고 적어서 계속 아래와 같은 충돌이 났다.
Menu 테이블에는 foodId로 컬럼을 만들고, Food 테이블에는 id로 만들어서 충돌이 나서 위와 같이 바꿔줬다..
@Getter
@NoArgsConstructor
@Entity
@DynamicUpdate
public class Food {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
...
}
Unable to find com.programmers.domain.Food with id 1; nested exception is javax.persistence.EntityNotFoundException: Unable to find com.programmers.domain.Food with id 1 org.springframework.orm.jpa.JpaObjectRetrievalFailureException: Unable to find com.programmers.domain.Food with id 1; nested exception is javax.persistence.EntityNotFoundException: Unable to find com.programmers.domain.Food with id 1 at app//org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:379) at app//org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) at app//org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) at
'Spring' 카테고리의 다른 글
[Spring] JPA (0) | 2023.05.02 |
---|---|
[Spring] @Transactional (0) | 2023.04.28 |
[Spring] 게시판 Service을 만들면서 QnA (0) | 2023.03.24 |
[Spring] 게시판 TDD를 만들면서 QnA (0) | 2023.03.24 |
[Spring] 게시판 Repository 을 만들면서 QnA(JpaRepository,Builder,@Modifying,@Transactional) (0) | 2023.03.18 |