论坛首页 Java企业应用论坛

一个应用的问题.

浏览 7336 次
该帖已经被评为精华帖
作者 正文
   发表时间:2003-09-25  
初学hibernate,有这样一个问题,当有 A > B > C > D 多层 一对多关系时.
当有时仅想得到A的部分资料目录,而不需要BCD信息时,如果把A做成一个当然是不好的,hibernate会把BCD等等相关内容也都取出来了,

是不是该用subclass,然后把many-to-one放到subclass里去,根据不同需要用不同的class呢?

用struts+hibernate时还碰到一个问题,比如:
A > B 是一对多的关系
我把AB都放到一块儿一起录入(也就是一个界面上录入),提交保存操作正常.
用的是
是可以正确运行的.
[list=]a = ...;
b[] = ....;
for ( in i =0 ; i < b.length; i++ )
a.addB( b[i] );
save( a );

在修改时再保存时,用
a = ...;
b[] = ....;
for ( in i =0 ; i < b.length; i++ )
a.addB( b[i] );
update( a );
这时就会出错,会把b的内容用insert到数据库,而不用update到数据库,这个应该怎么用呢?

还遇到用saveOrUpdate( b )的时候会出错(破坏了数据库唯一性).
改用
try { save( b ); } catch (Exception e) { update( b ); }
是可以成功运行的. [/list]
   发表时间:2003-09-25  
http://hibernate.bluemars.net/41.html
0 请登录后投票
   发表时间:2003-09-25  
引用
初学hibernate,有这样一个问题,当有 A > B > C > D 多层 一对多关系时.
当有时仅想得到A的部分资料目录,而不需要BCD信息时,如果把A做成一个当然是不好的,hibernate会把BCD等等相关内容也都取出来了,

是不是该用subclass,然后把many-to-one放到subclass里去,根据不同需要用不同的class呢?


不需要,只要使用lazy loading就可以了。

引用
用struts+hibernate时还碰到一个问题,比如:
A > B 是一对多的关系
我把AB都放到一块儿一起录入(也就是一个界面上录入),提交保存操作正常.
用的是
是可以正确运行的.
[list=]a = ...;
b[] = ....;
for ( in i =0 ; i < b.length; i++ )
a.addB( b[i] );
save( a );

在修改时再保存时,用
a = ...;
b[] = ....;
for ( in i =0 ; i < b.length; i++ )
a.addB( b[i] );
update( a );
这时就会出错,会把b的内容用insert到数据库,而不用update到数据库,这个应该怎么用呢?


不需要写update

引用
还遇到用saveOrUpdate( b )的时候会出错(破坏了数据库唯一性).


不应该用saveOrUpdate
0 请登录后投票
   发表时间:2003-09-25  
第一个我回去试试,

第二个因为有可能同时修改了a及b中的内容(因为内容不多,放在一个界面上了),不用update那该怎么保存起来呢?

第三个是因为在修改时,其中b,有可能是修改,也有可能是添加的。saveOrUpdate不是相当于实现
try { save( b ); } catch (Exception e) { update( b ); }
的功能么?

比如一个简单的权限系统。
a是简单的用户信息,只有几个字段,用户名、密码,
b是用户的权限,用户名+模块代码+权限值
模块代码+模块名称+进入链接,放在数据字典里面,可以动态增减模块,当添加模块的时候就会出现第三个所说的。
0 请登录后投票
   发表时间:2003-09-25  
谢谢钩子船长,写了半天才看到你的,呵呵,又问重复了
0 请登录后投票
   发表时间:2003-09-25  
第二个还有点不懂,如果不用update或其它,Session怎么知道我的 a 呢?因为a本身也是修改后的内容,是从客户端提交来的数据填成的。
0 请登录后投票
   发表时间:2003-09-25  
rain999 写道
第二个还有点不懂,如果不用update或其它,Session怎么知道我的 a 呢?因为a本身也是修改后的内容,是从客户端提交来的数据填成的。


tx.commit的时候会检测PO的状态是否同步。只有跨Session进行PO状态同步的时候才需要用到update。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics