당신은 그것이 지속되면 YBean을 유지하기 위해 Hibernate에게 알려, 당신의 ManyToOne
에 cascade=CascadeType.PERSIST
필요 내가 구글 앱 엔진의 스토리지 사용하고
@Entity
@Table (name = "Y_BEAN")
public class YBean implements XInterface {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;
@OneToOne(cascade=CascadeType.ALL)
private ZBean zName;
@OneToOne(cascade=CascadeType.ALL)
private PBean pBean;
@OneToOne(cascade=CascadeType.ALL)
private RBean rBean;
@OneToMany (mappedBy="yBean", cascade=CascadeType.ALL)
private List<XBean> xBeans;
// getter setter for each are below ...
}
아래처럼
@Entity
@Table (name = "X_BEAN")
public class XBean implements XInterface {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;
private String xName;
@OneToOne(cascade=CascadeType.ALL)
private PBean pBean;
@ManyToOne
@JoinColumn(name="y_id")
private YBean yBean;
@OneToOne(cascade=CascadeType.ALL)
private qBean qBean;
@OneToOne(cascade=CascadeType.ALL)
private RBean rBean;
@OneToMany (mappedBy="xBean", cascade=CascadeType.ALL)
private List<KBean> kBeans;
// getter setters for each are below ...
}
및 YBean의 구조
입니다 XBean.
역도에 캐스케이드 속성을 사용할지 여부도 고려해야합니다 (OneToMany
). CascadeType.ALL
으로, YBean의 인스턴스를 삭제할 경우, Hibernate는 관련된 모든 XBean (0, 1, 또는 다수가있을 수 있음)을 삭제합니다. CascadeType.ALL
은 "를 통해 지속성 작업을 삭제를 포함하여 적용 할 수 있습니다. 이 속성 또는 컬렉션 ". CascadeType.ALL
이없고 하나 이상의 XBeans에 의해 참조 된 YBean을 삭제 한 경우 해당 XBeans는 존재하지 않는 YBean ID를 참조하게되므로이 경우에는 정리를해야 할 것입니다.
두 비즈니스 로직 모두 XBeans에서 참조하지 않을 때까지 비즈니스 로직에서 절대로 YBean을 삭제하지 않지만 비즈니스 로직이 해당 케이스를 방해하지 않는 경우 두 옵션 모두 관련이 없습니다. XBeans를 없애거나, 지우고 싶은 (삭제하지 않고) 지워지는 YBean을 더 이상 참조하지 않기를 원할 것입니다.
출처
2014-10-08 19:20:17
Tim
여기에 '키'유형은 무엇입니까? – erencan
'키'는 'com.google.appengine.api.datastore.Key'입니다. 나는'cascade = CascadeType.PERSIST'를 사용하여 Google App Engine의 스토리지 – S4beR