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) ONINSERTSET 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
Post a Comment