부모 개체와 자식 개체가 두 개 있다고 가정합니다. 아이가 부모 엔티티와 참조에 지정된 관계를 갖기를 원하지만 부모가 그것에 대해 알 필요가 없기를 바랍니다. 그 이유는 이러한 관계가 수없이 많기 때문이며 모든 어린이들에 대한 관계를 명시 적으로 지정하면 부모 개체를 지속적으로 업데이트하고 오염시키는 것을 의미하기 때문입니다. 그러나 나는 여전히 자식 개체에 캐스케이드 할 부모 개체를 삭제하려고합니다. 추가 제약 조건으로 자식 객체는 부모의 ID를 참조하는 속성을 설정하여 상위 엔티티 집합에 대한 참조 만 갖습니다. 내가 좋아하는 뭔가를 가정하면 :Hibernate - 단방향 하위 관계 만이 지정된 주석을 사용하여 계단식 삭제하는 방법
@Entity
class Child {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(nullable=false)
private Long parentId;
@ManyToOne(fetch=FetchType.LAZY, optional=false)
@JoinColumn(name="parentId", insertable=false, updatable=false, nullable=false, unique=false)
private Parent parentEntity;
// etc...
}
@Entity
class Parent {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
// etc...
}
그런 다음 부모 개체에 추가 관계를 추가하지 않고 아이를 캐스케이드 할 수있는 부모 개체의 삭제 방법은 없나요?
JPA 주석 만 사용하는 솔루션이 선호되지만 도움이 될 것입니다.
이 개체를 만든 시점에서 부모 호출 ID (RPC 호출을 통해 제공됨) 만 있으므로 다른 조회를 수행하지 않고 추가하는 것이 편리합니다. –
session.load (Parent.class, parentId)를 사용하면 실제로 데이터베이스를 쿼리하지 않고도 문에서 사용할 수있는 자리 표시자를 만들 수 있습니다. – whiskeysierra