티스토리 뷰

반응형

@GeneratedValue(strategy = GenerationType.IDENTITY)란?

ForeignKey 설정하기

아래와 같이 테이블이 있을때 코드로 설정하는 방법

  1. 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 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함