2011-05-04 5 views
1

데이터베이스에서 최대 절전 모드 및 사전 삽입 트리거를 사용하고 있습니다. 시나리오를 설명해 드리겠습니다. 두 개의 테이블에 A와 B가 있습니다. 두 테이블 모두 기본 키는 사전 삽입 트리거를 통해 삽입됩니다. A의 기본 키는 B의 외래 키입니다. 따라서이 테이블에 삽입하면 B의 외래 키 열이 A (기본 키 값)의 트리거 값으로 채워집니다. 그러나 기대하지 않는 것은 일어나지 않습니다. 두 테이블의 기본 키가 제대로 삽입되지만 외래 키 열은 실제로 가져야하는 트리거 값 대신 값 0을 계속 유지합니다. 테이블에 일대 다 관계가 있습니다.최대 절전 모드 및 DB 트리거

두 테이블 등이있다 -

class Employee { 
    private int RECORDID; 
    @OneToMany(cascade=cascadeType.ALL) 
    @JoinColumn(name="MASTERRECORDID" , referencedColumnName="RECORDID") 
    private Collection<EmployeeDetails> employeeDetails = new ArrayList<EmployeeDetails>(); 
} 

class EmployeeDetails{ 
    private int RECORDID; 
    private int MASTERRECORDID; 
} 

감사

답변

2

Hibernate가 상자 밖으로 트리거에 의해 생성 된 기본 키를 지원하지 않습니다.

당신은 Before Insert Trigger and ID generator에 설명 된 사용자 정의 신분 생성기를 사용할 수 있습니다

class Employee { 
    @Id @GeneratedValue(generator = "trigger_gen") 
    @GenericGenerator(name = "trigger_gen", 
     value = "jpl.hibernate.util.TriggerAssignedIdentityGenerator") 
    private int RECORDID; 
    ... 
} 

당신의 실체 비 PK 고유의 필드를 가지고 있다면, 내장에 사용할 수있는 select 발전기.

은 참조 : 나랑 다시 꽤 오랜 시간 now.Thanks에 대한 붙어 있었다위한 lot.It 근무

+0

감사합니다. – Shubhra

+0

내 맞춤형 ID 생성기가 도움이 되셨다고 반갑습니다! – jplandrain