4
@Entity
@Table(name = "Section_INST")
public class Section {
@javax.persistence.Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "Section_ID_GENERATOR")
@SequenceGenerator(name = "Section_ID_GENERATOR",sequenceName = "Section_ID_SEQUENCER" , initialValue = 1 , allocationSize = 1)
@Column(name = "Section_ID")
private int Id;
@Column(name = "Section_Name")
private String name;
@OneToOne(optional = false,cascade = CascadeType.PERSIST)
@JoinColumn(name = "Exch_ID")
private Exchange exchange;
//---Constructor and Getter Setters-----
}
@Entity
@Table(name = "EXCHANGE_INST")
public class Exchange {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "Exchange_ID_GENERATOR")
@SequenceGenerator(name = "Exchange_ID_GENERATOR",sequenceName = "Exchange_ID_SEQUENCER" , initialValue = 1 , allocationSize = 1)
@Column(name = "Exchange_ID")
private int Id;
@Column(name = "Exchange_name")
private String name;
@OneToOne(mappedBy ="exchange")
private Section section;
//-----------Getter and Setter...And Constructor
}休眠:CascadeType.PERSIST不工作,但CascadeType.ALL保存對象
下面的程序無法正常工作 - >
final SessionFactory sessionFactory = configuration.buildSessionFactory();
final Session session = sessionFactory.openSession();
session.beginTransaction();
final Exchange exchange = new Exchange("MyExchange");
final Section section = new Section("MySection" , exchange);
exchange.setSection(section);
session.save(section);
session.getTransaction().commit();
session.close();
如果我在Section.java改變級聯選項。到CascadeType.ALL然後它工作。
@OneToOne(optional = false,cascade = CascadeType.PERSIST) --- > CascadeType.ALL
@JoinColumn(name = "Exch_ID")
private Exchange exchange;
我覺得PERSIST要救我的對象d =,但它拋出異常:
org.hibernate.TransientPropertyValueException:非空屬性引用瞬態值 - 瞬態實例必須當前操作之前被保存: Section.exchange - >交易所
我已經失去了幾個小時的生活我永遠不會回來,因爲這個,所以謝謝!這並不明顯,記錄不完善。更多信息:https://forum.hibernate.org/viewtopic.php?t = 951275 – batwad
這麼多小時我失去了...因爲...該ORM文檔... =( –
如果更新父對象,我不希望孩子被更新,那麼如果我們使用SAVE_UPDATE,我們該如何實現這一點? – user3681970