IDENTITY_INSERT가 OFF로 설정되면 테이블 'products'의 ID 열에 명시적 값을 삽입할 수 없습니다.

Springframework JPA 를 사용해왔는데,  PostgreSQL, MySQL 에선 본적이 없던 에러가 나왔다. 테이블 ID 컬럼 속성에 auto increment 옵션을 달아놨는데 JPA에서 create 를 할때 id   값을 지정하려고 하니 이런 에러가 발생했다.  영어로는

 Cannot insert explicit value for identity column in table 'products' when IDENTITY_INSERT is set to OFF

이런 식이다. 그냥 이 에러로 검색하면 해결법이 테이블 속성을 바꾸거나, 아래와 같이 쿼리를 수행 할 때 이전과 이 후에 처리를 해주는 것으로 나왔다.

SET IDENTITY_INSERT (table) ON

INSERT 

SET IDENTITY_INSERT (table) OFF


하지만 JPA 를 사용할때는 이런 쿼리를 수행하기가 까다로워서 더 찾아봤다. 해결 방법은 간단했는데,

@GeneratedValue(strategy=GenerationType.IDENTITY)

를 Entity 클래스의 column  선언에 추가해 주면 된다. 

public class ProductEntity {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    public int id;
}

이런 식으로 수정을 해주고 나니 에러 없이 데이터 추가가 잘 되었다.  

Comments

Popular posts from this blog

삼성전자 무선사업부 퇴사 후기

개발자 커리어로 해외 취업, 독일 이직 프로세스

코드리뷰에 대하여