首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

hibernate 怎么删除TableViewer中选中的记录

2013-06-25 
hibernate如何删除TableViewer中选中的记录?这是主要代码:(BuyMed就是那个对象)private class DeleteActio

hibernate 如何删除TableViewer中选中的记录?
这是主要代码:(BuyMed就是那个对象)
      private class DeleteAction extends Action {
                 IStructuredSelection selection = (IStructuredSelection)tableViewer.getSelection();
                 BuyMed buyMed = (BuyMed)selection.getFirstElement();
                 public DeleteAction() {setText("删除");}
                 public void run() {
                       if(buyMed == null)  return;
                       if(MessageDialog.openConfirm(null, null, "确定要删除吗?")) {
                             if(deleteData()) {
                                    tableViewer.remove(buyMed);
                                    List<?> list = (ArrayList<?>)tableViewer.getInput();
                                    list.remove(buyMed);

                             }else {
                              MessageDialog.openConfirm(null, null, "删除失败!");
                             }
                    }
            }


                 private boolean deleteData() {
                         try {
                                    Session session = HibernateSessionFactory.getSession(
                                        "hibernate_derby.cfg.xml");
                                    Transaction tx = session.beginTransaction();


                                    Iterator<?> data = ((List<?>)tableViewer.getInput()).iterator();
                                    if(data.hasNext()) {
                                             buyMed = (BuyMed)data.next();
                                             session.delete(buyMed);
                                                            ....
                                             tx.commit();
                        HibernateSessionFactory.closeSession();

               }
      }

                     .....

我想的逻辑就是这样(不知道对不对),运行的时候是可以删除对象,但是删除的却是最先插入的那条记录(先插入的先被删),而不是我想删除的,选中的那条记录。
所以我想请教,如何才能达到我想要的效果?哪里不对了,该怎么改?谢谢~~ Hibernate session
[解决办法]
你上面那个类,获取的selection永远是你创建该类实例的时候获得的,。你需要的是删除选中后的纪录,但是run方法没有重新获取selection。
[解决办法]
Session session = HibernateSessionFactory.getSession(
                        "hibernate_derby.cfg.xml");
这句话没用,,底层的代码不要放到Action层中来。。
[解决办法]

引用:
Quote: 引用:

Session session = HibernateSessionFactory.getSession(
                        "hibernate_derby.cfg.xml");
这句话没用,,底层的代码不要放到Action层中来。。



没用?不要放到Action层?不太理解啊~那该放哪?


有用到三层吗?  我看你数据库访问的代码,放在了Action层。。。。没有的话那先这样以后慢慢分层开发 ,体会其中的好处。
[解决办法]
引用:
哦~~这样啊,我菜鸟一个啦,谢谢指点!是在Action的run方法中放一个delete方法,这样比较好,是吧?
不是,那不一样吗???都是耦合在了一个Action类中,程序得不到扩展,,你可以看看三层开发。。

热点排行