我想解決瞬態對象異常而不添加級聯= CascadeType.ALL。一開始,這裏是我的實體。第一個是Person.java避免瞬態.TransientPropertyValueException而不使用級聯= Cascade.ALL
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@ManyToOne
//(cascade = CascadeType.ALL)
private Address address;
---------
}
地址具有在數據的基礎上( 「標籤」=美國, 「標籤」=加拿大)只是兩個元素。這是一個數據存儲庫。在這之前,每件事都是好的,但是這個問題從這兩個實體開始。
這是我的實體合同:
public class Contract implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@ManyToOne(cascade =CascadeType.ALL)
private Person person;
}
最後也是最重要的實體Company.java:
public class Company implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Contract contract;
}
這裏的問題是,當我想創建一家公司出現此錯誤:
org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing
你們中的一些人會告訴我添加Cascade = CascadeType.ALL之前私人地址地址,但我不想這樣做,因爲地址是一個數據存儲庫,我不想堅持它,我可以做所有事情級聯複用堅持。
謝謝你的幫助。