0
내가 (PostgreSQL을에)로 정의 된 테이블에 스프링 JPA를 사용하여 값을 삽입하려고
을에서 null이 아닌 제약 조건을 위반JPA 삽입 쿼리 생성 PostgreSQL의
CREATE TABLE T_PERSISTENT_AUDIT_EVENT
(id BIGINT AUTO_INCREMENT NOT NULL,
principal VARCHAR(255) NOT NULL,
event_date TIMESTAMP,
event_type VARCHAR(255),
CONSTRAINT PK_T_PERSISTENT_AUDIT_EVENT PRIMARY KEY (id));
엔티티는 다음과 같이 정의된다 :
@Entity
@Table(name = "T_PERSISTENT_AUDIT_EVENT")
public class PersistentAuditEvent {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
//...
}
내 쿼리가 실행될 때 (스프링 보안이 실행 중일 때), null이 아닌 제약 조건을 위반하여 null 값을 테이블에 삽입하려고한다는 예외가 발생합니다.
insert into ... (id, ...) values (null, ...);
을 그때, 삽입 문에서 내 AUTO_INCREMENT 작품을 id 컬럼을 제거하면 다음과 같이
쿼리가 생성됩니다. 그렇지 않으면 그렇지 않습니다.
삽입에서 내 ID를 무시하도록 JPA를 제어하려면 어떻게해야합니까?
['IDENTITY'] (http://docs.oracle.com/javaee/7/api/javax/persistence/GenerationType.html#IDENTITY)가 어떻게 작동하는지 모르겠지만 PostgreSQL의 경우에는' GenerationType.SEQUENCE' 또는'GenerationType.AUTO'를 사용하여 'AUTO_INCREMENT'와 같은 기능을 구현할 수 있습니다. BTW'AUTO_INCREMENT'는 PostgreSQL의 순수 SQL에서는 유효하지 않습니다.'serial' 의사 형식을 사용하거나 시퀀스를 사용하십시오. – pozs