错误:org.hibernate.MappingException:未知实体:com.myapp.struts.timesheetForm
尝试使用hibernate框架在Struts的Action类中从Bean保存数据时,会出现上述错误。
主要文件:
timeSheet.jsp
timesheetForm.java
timeSheetAction.java
TimeSheetData.java是我的pojo。
使用hibernate从数据库中提取数据非常简单,就像一个魅力。 timeSheet.jsp完全填充。
我的timesheetaction.java是我计划将更新的数据保存到数据库的地方。
我根据表单数据创建一个bean对象。
我根据timesheetdata.java
创建一个对象我使用beanutils将formbean的属性复制到pojo中。
然后通过会话对象进行更新。
我已经解决了它的null,但这就像我可以解决的那样。
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();
答案 0 :(得分: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();
答案 1 :(得分:0)
我认为没有可供更新的记录
答案 2 :(得分:0)
请检查hibernate映射,通过更改anotations中的可更新和可插入的参数,可以轻松解决此问题。
例如,在我的情况下,我通过更改它来解决它:
@OneToMany
@JoinColumn(name = "columnPK", updatable = true, insertable = true)
private List<ObjectX> relatedElments;
用这个:
@OneToMany
@JoinColumn(name = "columnPK", updatable = false, insertable = false)
private List<ObjectX> relatedElments;
解释是这个参数阻止hibernate更新相关表,同时你试图插入/更新其他超级&#39;表。因此,请检查所有hibernate anotations。