分离对象我有更新脱离父/子结构的问题: (之一)为了 - >(许多)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