2017-02-02 1 views
0

나는 Hibernate에서 매우 새롭다. 나는 JPA와 함께 Hibernate를 사용하고있다. 주석이 달린 엔티티 클래스와이 엔티티 클래스와 관련된 테이블이 있습니다.최대 절전 모드에서 키 'PRIMARY에 중복 항목'59 '를 제거하십시오.

@Entity 
public class Test implements Serializable { 
    @Id 
    @GenericGenerator(name="inc" , strategy="identity") 
    @GeneratedValue(generator="inc") 
    private int id; 

    private String address; // setter getter and constructor 
} 

이 엔티티를 저장할 때 데이터를 db에 삽입합니다. 그러나 응용 프로그램 실행 프로세스 중에 다른 응용 프로그램이 동일한 테이블에 데이터를 삽입하고 있습니다. 내 응용 프로그램이 데이터를 저장하려고 할 때 키 'PRIMARY'예외에 대한 중복 항목 '59'가 생성됩니다. 그래서 데이터를 삽입하고 응용 프로그램 수준이 아닌 데이터베이스 수준에서 ID를 생성 할 수있는 생성기를 사용하려면 ID를 내 엔터티에 저장해야합니다.

답변

0

테이블 생성기 전략 또는 시퀀스 생성기를 사용하십시오.

+0

발견했다. 하지만 엔티티를 삽입하기 전에 매번 최대 (id)를 얻을 수있는 생성기가 필요합니다. Bcz일지도 모르지만 누군가가 수동으로 테이블에 데이터를 삽입합니다. 그때 테이블 생성기도 실패합니다. 친절하게 안내 해줍니다. –

+0

누군가가 테이블을 직접 업데이트 한 경우 수동으로 ID를 처리해야합니다. 즉, 레코드를 삽입하기 전에 최대 ID를 가져 와서 +1하고 +1하십시오. –

0

발전기를 지정할 필요가 없습니다. 기본 생성기를 사용할 수 있으며 수동으로 ID를 설정하지 마십시오. 오류가 계속 발생하면 병합/지속 방법을 게시하십시오. 발전기에 대한

더 많은 정보는 수 당신은 여기 https://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing 내가 당신과 동의

@Entity 
public class Test implements Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private int id; 

    private String address; // setter getter and constructor 
} 
관련 문제