2013-03-08 36 views
0

錯誤:org.hibernate.MappingException:未知實體:com.myapp.struts.timesheetForm批更新從update [0]返回了意外的行計數;實際行數:0;預期:1個

試圖將數據從一個Bean Action類內Struts中使用休眠框架保存時,會發生上述錯誤。

主要文件:

timeSheet.jsp 
timesheetForm.java 
timeSheetAction.java 

TimeSheetData.java是我的POJO。

使用休眠從數據庫中提取數據很容易,並且像魅力一樣工作。 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(); 

回答

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(); 
0

我覺得沒有記錄可更新

+0

我有數據庫中的60條記錄,該bean工作正常,因爲我已經檢查,它確實通過/ – user1477834 2013-03-08 13:15:36

0

請檢查你的Hibernate映射,這個問題可以通過easyly在anotations改變可更新和可插入PARAMS解決。

例如,在我來說,我解決它通過改變它:

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

與此:

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

的解釋是,這PARAMS防止冬眠,而你嘗試更新相關的表插入/更新其他'超級'表。所以,檢查所有休眠狀態。

相關問題