保存的代码:
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction(); Event theEvent = new Event();
theEvent.setTitle(title);
theEvent.setDate(theDate);
EventDetail eventDetail = new EventDetail();
eventDetail.setDetail("11");
Set eventDetailSet = new HashSet();
eventDetailSet.add(eventDetail);
eventDetail = new EventDetail();
eventDetail.setDetail("22");
eventDetailSet.add(eventDetail);
theEvent.setEventDetailSet(eventDetailSet); session.save(theEvent); session.getTransaction().commit();
session.close();
是单向关联的,那应该怎么设置呢?
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction(); Event theEvent = new Event();
theEvent.setTitle(title);
theEvent.setDate(theDate);
EventDetail eventDetail = new EventDetail();
eventDetail.setDetail("11");
Set eventDetailSet = new HashSet();
eventDetailSet.add(eventDetail);
eventDetail = new EventDetail();
eventDetail.setDetail("22");
eventDetailSet.add(eventDetail);
theEvent.setEventDetailSet(eventDetailSet); session.save(theEvent); session.getTransaction().commit();
session.close();
是单向关联的,那应该怎么设置呢?
解决方案 »
- 【Hibernate】一对一的双方都允许对方为空,怎么设置?
- 数据库连接问题
- 表tb_table中有time列,类型为datatime,如何取当天时间的所有数据
- smartUpload 上传由servlet转发出现乱码问题
- 如何截取字符串????
- hibernate 内连接查询 返回的是什么对象?
- EL语言的使用问题?
- 急急!tomcat在linux正常,现在转到solarlis上,就出现无法在url上打开中文文件名的文件的错误
- linux使用top命令查看cpu、mem若干疑惑!
- 有大哥教教我吗。。
- 困扰几周的问题了?根本没人回答我的问题
- Spring + Hibernate + Struts批量更新
Hibernate: select EVENTS_DETAIL_NUM.nextval from dual
Hibernate: select EVENTS_DETAIL_NUM.nextval from dual
Hibernate: insert into EVENTS (EVENT_DATE, title, EVENT_ID) values (?, ?, ?)
Hibernate: insert into EVENTS_DETAIL (detail, event_id, ID) values (?, ?, ?)
Hibernate: insert into EVENTS_DETAIL (detail, event_id, ID) values (?, ?, ?)
Hibernate: update EVENTS_DETAIL set EVENT_ID=? where ID=?
Hibernate: update EVENTS_DETAIL set EVENT_ID=? where ID=?----如果设置双向关联是不是就能直接把主表的主键直接insert进去呢
你上面的执行的语句应该很多多余的,双向关联你在EventDetail的mapping文件加上
<many-to-one name="event" cascade="save-update" column="EVENT_ID" not-null="true" class="events.Event"/>
再执行你的保存代码看看怎么执行的
<set name="eventDetailSet" inverse="false" lazy="false" cascade="all">
<key column="EVENT_ID"/>
<one-to-many class="events.EventDetail"/>
</set>
把 inverse设为true若inverse为false
则在insert的时候,先插入一条记录,外键的值是NULL
再执行第二条语句更新语句, 把外键给关联上去
<set name="eventDetailSet" inverse="false" lazy="false" cascade="all">
<key column="EVENT_ID" not-null="true"/>
<one-to-many class="events.EventDetail"/>
</set>