小弟问个SSH多表操作问题

面试精华 2012-10-20 10:16:02
我在主表A 增加数据,B子表也要跟着增加相应的数据,子表B也有外键关系 ,关联C表,用SSH做,不知道该如何做,这问题困扰了许久,昨晚3点睡觉都没搞定,好失望,希望你能帮助下我。谢谢了!
表结构:

A:主表
create table A --用户信息
(
A_ID NUMBER not null,
A_NAME VARCHAR2(20) not null,
A_PASSWORD VARCHAR2(20) not null,
A_STATUS NUMBER(6) not null,
A_VERSION NUMBER(10) not null
);


B 表:子表
create table B
(
B_ID NUMBER(10) not null,
C_ID NUMBER(10) not null, --关联 C 的外键字段

A_ID NUMBER not null --关联 A 的外键字段
);

C 表:主表
create table C
(
C_ID NUMBER(10) not null,
C_TITLE VARCHAR2(200) not null,
C_TYPE NUMBER(6) not null
);


...全文
219 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
面试精华 2012-10-30
  • 打赏
  • 举报
回复
CSDN!!!!你太让我失望了!!!尽然结帖结不了!!!
面试精华 2012-10-30
  • 打赏
  • 举报
回复
谢谢各位了!!!!! 
ZMLXS 2012-10-22
  • 打赏
  • 举报
回复
B表是不是自动生成的? 多对多可以生成一张表。 我看还是表之间的问题
吉他猪 2012-10-21
  • 打赏
  • 举报
回复
额,看错了,那也差不多把,
jsp_style 2012-10-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

引用 1 楼 的回复:

你先一个个高清 A B的关系是什么 一对一 一对多 多对一 多对多?
然后就用hibernate 生成隐射文件啊 然后设置隐射关系

同样的B C 一步步来
建议用JPA简单一点

A-->B是一对多关系, C-->B也是一对多关系。
[/Quote]
A-->B 多对一,C-->B 多对一......
吉他猪 2012-10-21
  • 打赏
  • 举报
回复
既然你是用hibernate那肯定有实体与表的映射.
A类中有Set<B> bs = new HashSet<B>();
1.你想在添加A的时候自动添加B,需要给bs属性上添加一个级联保存cascade属性。
2.由于多的一端也就是B是关系的维护端,当你用bs.add(new B())时不行,此时B是不知道A的存在的
所以建议在A类中自己写个辅助方法列如:
public void addB(B b) {
bs.add(b);
b.setA(this);//B类中肯定有维护关系的属性假设是A a;a这个,这句是让B端知道A的存在便于更新外键维护2着的关系
}
这样当你用session.save(a)时就会将所有对应的b保存进去了,
3.测试阶段:用junit
@Test
public void save() {
C c = new C();
c.setxx//设置c的其他属性
session.save(c);//先要保存c让其处于持久状态

B b1 = new B();
B B2 = new B();
A a = new A();
a.setxx//设置a的其他属性
b1.setC(c);//设置B与C关系
b2.setC(c);//设置B与C关系

a.addB(b1);
a.addB(b2);
session.save(a);//这样当保存a的时候会保存b,通过b会去更新与c之间的外键来维护b和c之间的关系
}
上面的都是伪代码,我这里都没测试过不知道是不是对的,按我的理解应该是没问题的,如果有什么问题我在去测试看看
面试精华 2012-10-20
  • 打赏
  • 举报
回复
表结构写错了点,应该

C 表:主表
create table C
(
C_ID NUMBER(10) not null,
B_ID VARCHAR2(200) not null,
A_ID NUMBER(6) not null
);


面试精华 2012-10-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

你先一个个高清 A B的关系是什么 一对一 一对多 多对一 多对多?
然后就用hibernate 生成隐射文件啊 然后设置隐射关系

同样的B C 一步步来
建议用JPA简单一点
[/Quote]
A-->B是一对多关系, C-->B也是一对多关系。
a8509190 2012-10-20
  • 打赏
  • 举报
回复
你先一个个高清 A B的关系是什么 一对一 一对多 多对一 多对多?
然后就用hibernate 生成隐射文件啊 然后设置隐射关系

同样的B C 一步步来
建议用JPA简单一点
AsYouLikeIt 2012-10-20
  • 打赏
  • 举报
回复
要么在程序中用事物 要么 数据库添加触发器
supermail988 2012-10-20
  • 打赏
  • 举报
回复
用JPA吧
面试精华 2012-10-20
  • 打赏
  • 举报
回复
哦 !纳尼!没人来!

67,516

社区成员

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

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