如何在休眠状态下进行更新?

时间:2020-05-15 08:25:01

标签: java postgresql hibernate spring-mvc

当我输入注册ID CL123的新数据(其中注册ID是一个主键)并且调用了以下方法时,它将成功以状态为“ FRESH”输入数据库。如果我想通过调用相同的方法来更新此特定的注册ID,它也可以正常工作,但是现在我想使用“ DUPLICATE”作为状态进行更新。怎么做?请帮助我。

public Integer savecertificate(Certification certification) {
     Session session = sessionFactory.openSession();
     session.beginTransaction();
     certification.setRegID("CL123");
     certification.setClass("M.Sc");
     certification.setStatus("FRESH");

     //certification.setStatus("DUPLICATE");

     session.saveOrUpdate(certification);
     session.getTransaction().commit();
    }

2 个答案:

答案 0 :(得分:0)

您需要创建另一种更新方法,如下所示。

public Integer updateCertificate(Certification certification) {
     Session session = sessionFactory.openSession();
     session.beginTransaction();
     certification.setRegID("CL123");
     //certification.setStatus("FRESH");

     certification.setStatus("DUPLICATE");

     session.saveOrUpdate(certification);
     session.getTransaction().commit();
    }

仅供参考... Hibernate将检查具有相同ID(主键)的数据库(如果存在),然后将对其进行更新或在数据库中创建新记录。

访问此StackOverFlow链接

答案 1 :(得分:0)

我找到了解决我问题的方法。在这里

    public Integer savecertificate(Student info) {
         Session session = sessionFactory.openSession();
         session.beginTransaction();

         String hql = "Select status from Student where regid='CL123'";
         SQLQuery query = session.createSQLQuery(hql);
         query.setParameter("info", info);
         List<String> status=query.list();

         certification.setRegID("CL123");
         certification.setClass("M.Sc");
         if(status.isEmpty){
            certification.setStatus("FRESH");
         }
         else{
            certification.setStatus("DUPLICATE");
         }

         session.saveOrUpdate(certification);
         session.getTransaction().commit();
    }

效果很好