0

错误:org.hibernate.MappingException:未知实体:com.myapp.struts.timesheetForm

当尝试使用休眠框架在 Struts 中的 Action 类中保存来自 Bean 的数据时,会发生上述错误。

主要文件:

timeSheet.jsp
timesheetForm.java
timeSheetAction.java

TimeSheetData.java 是我的 pojo。

使用 hibernate 从数据库中提取数据很容易,而且效果很好。timeSheet.jsp 得到完美填充。

我的 timesheetaction.java 是我计划将更新的数据保存到数据库的地方。

我根据表单数据创建了一个 bean 对象。

我基于 timesheetdata.java 创建一个对象

我使用 beanutils 将 formbean 的属性复制到 pojo 中。

然后通过会话对象更新。

我已经计算出它是空的,但这就是我能解决的。

Session sess = HibernateUtil.getSessionFactory().getCurrentSession();
sess.beginTransaction();
timesheetForm formBean = (timesheetForm)form;
timeSheetData formData = new TimeSheetData();
formBean.setAdditionhours4_1(formBean.getAdditionhours1_1());
BeanUtils.copyProperties(formData, formBean);
sess.update(formData);
sess.getTransaction().commit();
sess.flush();
sess.close();
4

3 回答 3

1
Session sess = HibernateUtil.getSessionFactory().getCurrentSession();

    Transaction tx = sess.beginTransaction();
    // extract user data
    timesheetForm formBean = (timesheetForm)form;

int count = 0;
   int loopConstraint = 0;

   while(loopConstraint < dataList.size())
   {

      int ID = Integer.parseInt(dataList.get(loopConstraint).toString());
      TimeSheetData formData = (TimeSheetData) sess.load(TimeSheetData.class, ID);

   //relevant additions to database

    sess.update(formData);
      sess.flush();
      sess.clear();

   }
      tx.commit();
于 2013-03-27T15:07:01.227 回答
0

我认为没有可更新的记录

于 2013-03-08T13:06:51.477 回答
0

请检查您的休眠映射,通过更改注释中的可更新和可插入参数可以轻松解决此问题。

例如,就我而言,我通过更改它来解决它:

@OneToMany
@JoinColumn(name = "columnPK", updatable = true, insertable = true)
private List<ObjectX> relatedElments;

有了这个:

@OneToMany
@JoinColumn(name = "columnPK", updatable = false, insertable = false)
private List<ObjectX> relatedElments;

解释是当您尝试插入/更新其他“超级”表时,此参数会阻止休眠更新相关表。因此,请检查所有休眠注释。

于 2014-04-25T14:09:00.300 回答