日期:2014-05-20  浏览次数:20777 次

hibernate一对多映射 保存数据问题
现在有两张表用户(user) 订单表(order) 结构如下:

create table user (
  id number(20) not null, //主键 用户Id
  name varchar2(128) //用户名
)

create table order (
  id number(20) not null, //主键
  user_id number(20), //用户Id 对应user表的主键 (外键)
  order_no varchar2(128) //订单号
)

从对象的角度看,用户与订单是一对多的关系,于是我使用hibernate在user表对应的映射文件中做了一对多映射,如下:
<set name="orders" cascade="save-update" inverse="false" lazy="true">
  <key column="user_id" />
  <one-to-many class="xxx.xx.xx.Order" />
</set>

然后在user表对应的域对象中增加了一个集合private Set<Order> orders;

现在我创建一个User对象, 然后在创建一个Order对象集合, 然后把order集合赋值给User对象, 然后保存User对象, hibernate就会级联自动将Order对象也给我保存了。

可是,如果在保存Order对象时发生了错误(比如not-null等), hibernate也会将User信息插入到数据库,这要如何避免呢? 是依靠事务吗? 还是有其他配置。

请大家多帮帮忙, 谢谢!~

------解决方案--------------------
一对多关系管理时,如果是单向关联,直接在多的一方设置关系就行了,如果是双向关联,那就把主控方放在多的一方!楼主试试行不
------解决方案--------------------
探讨

一对多关系管理时,如果是单向关联,直接在多的一方设置关系就行了,如果是双向关联,那就把主控方放在多的一方!楼主试试行不

------解决方案--------------------
探讨

引用:

一对多关系管理时,如果是单向关联,直接在多的一方设置关系就行了,如果是双向关联,那就把主控方放在多的一方!楼主试试行不

正解