探索与发现

研究java技术

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  83 随笔 :: 0 文章 :: 109 评论 :: 0 Trackbacks

http://www.blogjava.net/Files/zhaijianhui/ejb插删改查.rar

/*
对表的修改
*/
public void updateNode(UseInfoDto dto) {
    UseInfo useinfo;
   try {
     System.out.println("===========");
    useinfo=home.findByPrimaryKey(dto.getName());
    useinfo.setPassword(dto.getPassword());
    System.out.println("用户名"+dto.getName()+"修改后的记录密码"+dto.getPassword());
   }
   catch (Exception ex) {
     ex.printStackTrace();
     System.out.println("修改记录出现异常");
   }
  }
因为name作为主键,所以不可能再在这里调用setName("xxxxxw")方法了,,
否则会产生错误:
javax.ejb.TransactionRolledbackLocalException: EJB Exception: ; nested exception
 is: java.lang.IllegalStateException: [EJB:010144]The setXXX method for a primar
y key field may only be called during ejbCreate.
java.lang.IllegalStateException: [EJB:010144]The setXXX method for a primary key
 field may only be called during ejbCreate.
想一想有没有必要修改主键的值呢,很显然是没有必要的,看看当今的一些应用就知道,电信,银行这些部门只提供注册用户的一般资料验证,不会允许你去改用户名的..
/*
对表增加一条记录
*/
 public void addNode(UseInfoDto dto) {
    UseInfo useinfo;
 try {
   System.out.println("home=========="+home);
    useinfo = home.create(dto.getName());
    //useinfo.setName(dto.getName());
    useinfo.setPassword(dto.getPassword());
    System.out.println("调用 了addNode");
    System.out.println("创建了新记录为"+dto.getName()+":"+dto.getPassword());
 }
 catch (CreateException ex) {
   ex.printStackTrace();
   System.out.println("创建远程接口实例时出异常");

 }
这也和上面的一个道理,因为主键字段不允许暴露给客户setXXX方法,所以我们要创建一个create(主键)给客户调用,这样我们就可依我上面所做的方式创建一条记录了,,
注意在ejbCreate(XXX)方法里要加上一句  setXXX(XXX);否则会报错的哟
因为ejbCreate在服务器本地调用所以可以调用setXXX方法.
ok,祝旅途愉快!

posted on 2006-07-14 23:12 蜘蛛 阅读(911) 评论(0)  编辑  收藏 所属分类: ejb

只有注册用户登录后才能发表评论。


网站导航: