分離對象我有更新脫離父/子結構的問題: (之一)爲了 - >(許多)orderLines如何更新休眠
這裏就是我想要做的事: *打開一個會話,加載一個訂單,然後關閉會話。 *對訂單的行進行一些更改。 *根據訂單進行一些更改。 *打開一個新的會話,無論如何: * session.save(order)。 * session.update(order)。 * session.merge(order)。 訂單的行不會被更新。
這裏是我寫的代碼。
public class Order implements Serializable{
private static final long serialVersionUID = 1L;
private Integer idOrder;
private String date;
private List<OrderLine>;
public Order(){}
// getters and setters
}
public class OrderLine implements Serializable {
private static final long serialVersionUID = 1L;
private Integer idOrderLine;
private Integer quantity;
public OrderLine(){}
// getters and setters
}
在會話中的一個------>加載順序
在會話中,兩個
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
order.setDate(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
// the user has modified the quantity of each line and i want to update them.
// which method should i use: update() or merge() or ... ?;
tx.commit();
這裏是我的映射:
<class name="Order" table="Order">
<id name="idOrder" type="int" column="idOrder">
<generator class="org.hibernate.id.enhanced.SequenceStyleGenerator">
<param name="sequence_name">Order_SEQ</param>
<param name="initial_value">1</param>
<param name="increment_size">1</param>
<param name="value_column">CurrentValue</param>
<param name="optimizer">hilo</param>
</generator>
</id>
<property name="date"/>
<list name="orderLine" table="orderLine">
<key column="idOrder"/>
<index column="idx"/>
<one-to-many class="OrderLine"/>
</list>
</class>
<class name="OrderLine" table="OrderLine">
<id name="idOrderLine" type="int" column="idOrderLine">
<generator class="increment"/>
</id>
<property name="quantity"/>
<many-to-one name="order" column="idOrder" not-null="true"/>
</class>
這是最好的如何更新訂單和訂單的行?
不看你的對象是分離,你想呼叫的更新,你仍然在你的交易。 – Elbek 2014-08-28 02:32:18