부모 테이블 A와 자식 테이블 B, C가 다 관계를 가지고 있습니다.Hibernate를 사용하여 부모 테이블을 갱신하는 동안 자식 테이블 레코드를 삭제하는 방법
부모 테이블의 기본 키 1 AI가 자식 테이블 B의 3 행과 자식 테이블에 4 행 C. 지금은 자식 테이블의 행을 삭제하려면
을 가지고처럼 데이터가 있다고 가정하자 부모 테이블 업데이트 중 (즉, 지금은 각 하위 테이블의 한 행만 사용하여 테이블을 업데이트하고 그 중 다른 행을 삭제하려는 경우) 최대 절전 모드에서이 시나리오를 처리하는 방법은 무엇입니까?
업데이트 첫째
, 내 질문이 불분명 미안. 자세한 내용은 다음과 같습니다.
내가
CREATE TABLE "DEV2"."POLICY" ("POLICY_OID" NUMBER(38,0) NOT NULL ENABLE, "CREATED_DATE" TIMESTAMP (0) NOT NULL ENABLE, "EFFECTIVE_DATE" TIMESTAMP (0), "UPDATED_DATE" TIMESTAMP (0), "STATUS" VARCHAR2(32 BYTE), CONSTRAINT "PK128" PRIMARY KEY ("POLICY_OID") , CONSTRAINT "REFPOLICY_CLASS290" FOREIGN KEY ("POLICY_CLASS") REFERENCES "DEV2"."POLICY_CLASS" ("POLICY_CLASS_REF") ENABLE)
과 @OneToMany 관계를 예를 들어 자식 테이블 POLICY_RELATIONSHIP
CREATE TABLE "DEV2"."POLICY_RELATIONSHIP" ("POLICY_RELATIONSHIP_OID" NUMBER(38,0) NOT NULL ENABLE, "POLICY_ACTOR" NUMBER(38,0) NOT NULL ENABLE, "POLICY_ACTOR_TYPE" VARCHAR2(32 BYTE) NOT NULL ENABLE, "POLICY_OID" NUMBER(38,0) NOT NULL ENABLE, CONSTRAINT "PK156" PRIMARY KEY ("POLICY_RELATIONSHIP_OID") , CONSTRAINT "REFPOLICY338" FOREIGN KEY ("POLICY_OID") REFERENCES "DEV2"."POLICY" ("POLICY_OID") ENABLE)
에 부모 테이블의 정책을 가지고,이 같은 샘플 데이터 뭔가가있다.
POLICY_OID CREATED_DATE EFFECTIVE_DATE STATUS UPDATED_DATE
1234 06/14/2020 06/14/2010 active 06/14/2010
POLICY_RELATIONSHIP_OID POLICY_ACTOR POLICY_ACTOR_TYPE POLICY_OID
98765 John Primary User 1234
98766 Bill Secondary User 1234
98767 Mary Intermediate User 1234
나는 1234 UPDATED_DATE이 2010년 6월 15일에 변경된 정책 개체를 유지하려고하고 PolicyRelationship이
POLICY_RELATIONSHIP_OID POLICY_ACTOR POLICY_ACTOR_TYPE POLICY_OID
null George Primary User 1234
가 최대 절전 모드로 가능한 모든 방법이 아래에 같은 데이터가있는 경우 삭제 PolicyRelation 테이블에 이미 존재하는 3 개의 행과 새로운 데이터를 가지는 새로운 행을 삽입합니다.
내 문제가 아직 불분명 한 경우 알려 주시기 바랍니다.
내 환경 :
자바 1.6, 보스 3.5 최대 절전 모드.
두 번째 방법을 사용하는 경우 PolicyRelationship의 외래 키가 NULL이 아니므로 DataIntegrityViolation 예외가 발생합니다. 그렇지 않니? – user529823
네가 맞다.더 생각해 보면, 두 번째 예제는 불분명했습니다. – zmf
불분명 한 점을 말해 줄 수 있습니까? 그러면 내가 제공해야하는 정보가 더 무엇인지 알게 될 것입니다. – user529823