title: Hibernate : CascadeType.PERSIST does not work but CascadeType.ALL to save object
body: <pre><code>@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
  </code></pre>
  
  <p>}</p>
  
  <p>The following program does not work -></p>
  
  <pre><code>    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();
  </code></pre>
  
  <p>If i change cascade options in Section.java to CascadeType.ALL then it works.</p>
  
  <pre><code>@OneToOne(optional = false,cascade = CascadeType.PERSIST)   --- &gt; CascadeType.ALL 
  @JoinColumn(name = "Exch_ID")
  private Exchange exchange;
  </code></pre>
  
  <p>I think PERSIST should save my object d=, but it throws exception :</p>
  
  <p>org.hibernate.TransientPropertyValueException: Not-null property references a transient value - transient instance must be saved before current operation: Section.exchange -> Exchange</p>