> 데이터 베이스 > MySQL 튜토리얼 > MySQL INSERT 문에 Hibernate의 예기치 않은 자동 증가 필드 포함을 수정하는 방법은 무엇입니까?

MySQL INSERT 문에 Hibernate의 예기치 않은 자동 증가 필드 포함을 수정하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-06 16:25:14
원래의
990명이 탐색했습니다.

How to Fix Hibernate's Unexpected Auto-Increment Field Inclusion in MySQL INSERT Statements?

JPA 주석으로 MySQL 자동 증가 필드 주석 달기

JPA에서 @GeneratedValue 주석은 자동 생성된 값이 어떻게 지정되는지 지정하는 데 사용됩니다. 열이 생성되어야 합니다. MySQL의 경우 자동 증가 열은 일반적으로 GenerationType.IDENTITY 전략으로 매핑됩니다. 그러나 생성된 SQL에 자동 증가 필드가 포함된 경우 구성 불일치가 있을 수 있습니다.

이 경우 Operator 개체에는 다음과 같은 자동 증가 필드가 있습니다.

@Id
@GeneratedValue
private Long id;
로그인 후 복사

이 주석은 다음 SQL을 생성해야 합니다.

insert 
into
    Operator
    (active, password, username) 
values
    (?, ?, ?)
로그인 후 복사

그러나 제공된 로그에는 SQL에 ID가 포함되어 있음이 표시됩니다. 열:

Hibernate: insert into Operator (active, password, username, id) values (?, ?, ?, ?)
로그인 후 복사

이 문제를 해결하려면 다음 단계를 따르십시오.

  1. MySQL 언어 지정: Hibernate 구성에서 MySQL5InnoDBDialect와 같은 MySQL 방언 또는 MySQL5Dialect.
  2. 테이블 정의 확인: 제공된 DDL에서와 같이 문제의 테이블에 자동 증가 열이 정의되어 있는지 확인:
CREATE TABLE `operator` ( 
`id` INT(10) NOT NULL AUTO_INCREMENT,
...
로그인 후 복사
  1. 코드 검토: Operator 엔터티를 다시 확인하고 올바른지 확인하세요. @GeneratedValue로 올바르게 주석 처리되었습니다.
  2. 클린 빌드 및 디버깅: 클린 빌드를 수행하고 빌드 디렉터리에 불일치가 있는지 확인하세요. 또한 의심스러운 활동이 있는지 로그를 검사하십시오.

문제가 지속되면 ID 생성 전략을 명시적으로 지정해야 할 수도 있습니다.

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
로그인 후 복사

위 내용은 MySQL INSERT 문에 Hibernate의 예기치 않은 자동 증가 필드 포함을 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿