我一直在嘗試幾天,以保持從導入的Excel工作表中獲得的數據沒有成功,並試圖找到異常令人作嘔。如何保存通過JPA從JTable檢索的實體對象?
這裏是代碼的某些部分,並錯誤堆棧跟蹤
@Action
public void persist(){
emf = Persistence.createEntityManagerFactory("MauranaSurveyPU");
em = emf.createEntityManager();
em.getTransaction().begin();
//loops through table to retrieve object and persist
int count = jTable1.getRowCount();
for(int i=0; i<count; i++){
Mauranagroup mn = new Mauranagroup();
String obj1 = (String)GetData(jTable1,i,0);
String obj2 = (String)GetData(jTable1,i,1);
String obj3 = (String)GetData(jTable1,i,2);
//set entity
mn.setRespondentId(Integer.parseInt(obj1));
mn.setMale(obj2);
mn.setFemale(obj3);
em.persist(mn);
}//end for
em.getTransaction().commit();
}//end method persist
// get object from jtable
private Object GetData(JTable jTable1, int x, int y) {
return jTable1.getModel().getValueAt(x,y);
}
這段代碼的問題是,它實際上仍然存在,但在事務提交 後,我得到這個堆棧跟蹤;
內部異常:java.sql.SQLIntegrityConstraintViolationException:語句被放棄,因爲它會造成一個獨特的或主鍵約束或通過在「MAURANAGROUP」定義「SQL130204062549290」標識的唯一索引中的重複的鍵值。 錯誤代碼:20000 呼叫:INSERT INTO MAURANAGROUP(RESPONDENT_ID,AMOUNTTOBESPENT,AREYOUFAMILIARNO
綁定=> [211個參數綁定] 查詢:InsertObjectQuery(entity.Mauranagroup [respondentId = 5])
當我刪除的記錄和再持續,我得到另一條線
綁定=> [211個參數綁定] 查詢:InsertObjectQuery(entity.Mauranag roup [respondentId = 2]) 在org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:324)
我不理解是,它實際上依然存在,我可以看到我保存的數據。這是循環還是循環沒有終止,因爲這個項目我實際上生病了。
我嘗試使用generatedValue,但不知道如何使用它,它一直說RespondentId不能接受空值,我實際上改變了@GeneratedValue和策略爲汽車,似乎並沒有工作,我也嘗試使用一個Random對象,它工作sortof但似乎影響了我的查詢結果 – user2041176