hibernate主从表操作问题

sysme 2011-08-18 03:10:51
1.实现:
主表实体:A
从表实体:B
在主表的实体类上设置了如下关系,从表未做关系设置:
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@JoinColumn(name="id")
public List<B> b;

保存数据的方法:
public void update(A ModiA) {
this.getHibernateTemplate().saveOrUpdate(ModiA);
}

2.问题:在我编辑或删除主表的数据后,总是会把从表的对应主键置为空。而我想要的效果是编辑主表时,不修改从表信息。删除主表时级联删除从表信息。是否是哪里配置错误??如果配置有问题,应如何配置?
控制台的SQL如下:
Hibernate: update A set billdate=?, deptno=?, maker=?, remark=? where id=?
Hibernate: update B set id=null where id=?


...全文
255 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sysme 2011-08-25
  • 打赏
  • 举报
回复
多谢,解决了。
你的方法没错。
liuyuhua0066 2011-08-22
  • 打赏
  • 举报
回复
你这是什么解决问题的态度?把问题一贴就不管不问了??
sysme 2011-08-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liuyuhua0066 的回复:]

你可以试试在B中加个 A a,然后关系设置改为:
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER, mappedBy = "a")
[/Quote]

“在B中加个 A a”怎么加?用的注解是什么?我加了如果不用任何注解,会出“java.sql.SQLException: ORA-00904: "B_"."A": invalid identifier”错误。
liuyuhua0066 2011-08-22
  • 打赏
  • 举报
回复
单端(A):
private List<B> b

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "a")


多端(B):
private A a

@ManyToOne(cascade={ CascadeType.REFRESH,CascadeType.MERGE,CascadeType.PERSIST })
@JoinColumn(name = "A_ID")
//A_ID是B表中对应A主键的列
sysme 2011-08-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 liuyuhua0066 的回复:]

你这是什么解决问题的态度?把问题一贴就不管不问了??
[/Quote]
是试了有问题,继续问怎么解决嘛。

“在B中加个 A a”怎么加?用的注解是什么?我加了如果不用任何注解,会出“java.sql.SQLException: ORA-00904: "B_"."A": invalid identifier”错误。
keaixiaozhu7688 2011-08-19
  • 打赏
  • 举报
回复
解决方案很多、我们是直接在数据库端设置一个级联删除。程序没有做控制。当然也可以在程序段控制。具体查看一下hibernate API、
孤独的远行者 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liuyuhua0066 的回复:]
你可以试试在B中加个 A a,然后关系设置改为:
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER, mappedBy = "a")
[/Quote]
这个可以参考
liuyuhua0066 2011-08-18
  • 打赏
  • 举报
回复
你可以试试在B中加个 A a,然后关系设置改为:
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER, mappedBy = "a")
liuyuhua0066 2011-08-18
  • 打赏
  • 举报
回复
你都@JoinColumn(name="id")了能不删从表id么

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧