次のような関係があります。
@Entity
@Table(name = "ORDER_", catalog = "smartorder")
public class Order implements Serializable {
/**
* serial version id
*/
private static final long serialVersionUID = 13875615L;
@Id
@Column(name = "ORDER_ID", unique = true, nullable = false)
@SequenceGenerator(name = "ORDER_ID_GEN", sequenceName = "ORDER_ID_SEQ")
@GeneratedValue(generator = "ORDER_ID_GEN")
private long orderId;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "INVOICE_ID", referencedColumnName = "INVOICE_ID")
private Invoice invoice;
// setters and getters
}
@Entity
@Table(name = "INVOICE_")
public class Invoice implements Serializable {
/**
* serial version id
*/
private static final long serialVersionUID = 13875612L;
@Id
@Column(name = "INVOICE_ID", unique = true, nullable = false)
@SequenceGenerator(name = "INVOICE_ID_GEN", sequenceName = "INVOICE_ID_SEQ")
@GeneratedValue(generator = "INVOICE_ID_GEN")
private int invoiceId;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "ORDER_ID", referencedColumnName = "ORDER_ID")
private Order order;
@Column(name = "SUB_TOTAL", precision = 6, nullable = false)
private double subTotal;
@Column(name = "SERVICE_TAX", precision = 6, nullable = false)
private double serviceTax;
@Column(name = "VAT", precision = 6, nullable = false)
private double vat;
@Column(name = "SURCHAARGE", precision = 6, nullable = false)
private double surChaarge;
@Column(name = "GRAND_TOTAL", precision = 6, nullable = false)
private double grandTotal;
//setters and getters
}
記録を適切に保存できます。しかし、請求書オブジェクトを注文オブジェクトに設定して注文オブジェクトを更新しようとすると、注文オブジェクトは永続化されず、請求書オブジェクトだけが永続化されます。
Order o = getSession().load(Order.class,1L);
o.setInvoice(new Invoice(.........));
getSession().update(o);
コンソールでは、INVOICE_ (DISCOUNT, GRAND_TOTAL, ORDER_ID, ROUNDING, SERVICE_TAX, SUB_TOTAL, SURCHAARGE, VAT) 値 (?, ?, ?, ?, ?, ?, ?, ?) に挿入する 1 つの SQL ステートメントのみを表示できます。
請求書 ID が注文テーブルで更新されていません :(
誰でも問題が何であるかを提案できますか。
前もって感謝します.....