2
최대 절전 모드 및 언버를 사용하고 있습니다.Hibernate는 양측 감사가 아닌 일대일 관계를 유지합니다.
는 I 2 엔티티 A 및 B (A)가 메인 엔티티와 B 그들은 일대일 및 양방향성 A.
의 서브 섹션이있다.
- 저장 A, 모두 A와 B가 수정 : 그들 중
모두 내가를 저장할 때 3 시나리오는 일이있다, @Audited된다. 두 버전 모두 새로운 버전 번호가 공유됩니다.
- A를 저장하면 A 만 수정됩니다. A에 대한 새 개정판이 있습니다.
- A를 저장하면 B 만 수정됩니다. B에 대한 새로운 개정판이있을 것입니다. (나는 이것을 원하지 않습니다.)
나는 항상 업데이트하기 위해 엔티티 A와 캐스케이드 B를 저장합니다. 시나리오 3에서 엔티티 A에 대한 개정을 어떻게 가질 수 있습니까? 많은 감사합니다 !!!
데이터 스키마, 내 스키마는이 게시물의 대답에 따라 구성됩니다 내 데이터 스키마 :
@Entity
@Audited
public class B implements Serializable {
....
//bi-directional one-to-one association to A
@MapsId
@OneToOne(mappedBy="b", cascade=CascadeType.ALL)
@JoinColumn(name="A_ID")
private A a;
}
@Entity
@Audited
@Table(name="A")
public class A implements Serializable {
...
//bi-directional one-to-one association to B
@OneToOne(cascade=CascadeType.ALL)
@PrimaryKeyJoinColumn
private B b;
나는 계속 저장하면 엔티티 A (A는 수정되지 않습니다와 B가 수정),
Hibernate generated sql
Hibernate: update A set ...
Hibernate: update B set ...
Hibernate: update C set ...
Hibernate: insert into RevEntity (CREATE_DATE, timestamp, username, id) values (?, ?, ?, ?)
Hibernate: insert into B_AUD ...
질문을 편집하여 실제 데이터 스키마를 게시 할 수 있습니까? 관련 코드는 SO 회원이 귀하의 질문에 더 잘 답변 할 수 있도록 도와줍니다. 감사합니다. – m4rtin