你的错误是
org.hibernate.TypeMismatchException: Provided id of the wrong type. Expected: class java.lang.Integer, got class java.lang.String
在您的堆栈跟踪中,我们可以看到dbd.create调用了其他方法
at com.my.dao.DepartementImplDB.getDepartementByNom(DepartementImplDB.java:54)at com.my.dao.DepartementImplDB.addDepartement(DepartementImplDB.java:29)
用你的方法
public Departement getDepartementByNom(String nomDepartement)
您尝试加载具有名称的部门,但您使用由ID加载的session.load wich加载。
Departement dept = (Departement) session.load(Departement.class, nomDepartement);
您必须提出一个Criteria请求才能按名称加载。喜欢
session.beginTransaction();Criteria criteria = session.createCriteria(Departement.class);criteria.add(Restrictions.eq("nomDepartement", nomDepartement).ignoreCase()); result = (Departement) criteria.uniqueResult(); session.getTransaction().commit();ps:在getDepartementById和getDepartementByNom中,您永远不会结束交易。请使用以下模式:
try { session.beginTransaction(); // your pre session.getTransaction().commit(); } catch (HibernateException e) { LOGGER.error(e); if (session.getTransaction().isActive()) { session.getTransaction().rollback(); } }


