Java 如何持久化通过JPA从JTable检索的实体对象?
几天来,我一直试图保存从导入的Excel工作表的jtable中获得的数据,但没有成功,试图发现异常令人恶心 下面是部分代码和错误堆栈跟踪Java 如何持久化通过JPA从JTable检索的实体对象?,java,jpa,jtable,Java,Jpa,Jtable,几天来,我一直试图保存从导入的Excel工作表的jtable中获得的数据,但没有成功,试图发现异常令人恶心 下面是部分代码和错误堆栈跟踪 @Action public void persist(){ emf = Persistence.createEntityManagerFactory("MauranaSurveyPU"); em = emf.createEntityManager(); em.getTransaction().begin(); //loops through table t
@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);
}
@操作
公共图书馆{
emf=Persistence.createEntityManagerFactory(“MauranaSurveyPU”);
em=emf.createEntityManager();
em.getTransaction().begin();
//在表中循环以检索对象并持久化
int count=jTable1.getRowCount();
for(int i=0;i[211参数绑定]
查询:InsertObjectQuery(entity.Mauranagroup[respondentId=5])
当我删除记录并再次保存时,我会得到另一行
绑定=>[211参数绑定]
查询:InsertObjectQuery(entity.Mauranagroup[respondentId=2])
位于org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:324)
我不明白是不是这样,它实际上一直存在,我可以看到我保存的数据。是循环还是循环没有很好地终止,因为这个项目,我实际上生病了。在您的表上有一个DB约束,即某些列是唯一的,您正在插入重复的值。我猜是响应者ID
。如果您尝试不这样做o第一次持久化表中的所有记录,我不会从表数据中提供id,而是使用sequence为您生成id并将其返回到UI
如果您试图修改表中存储的现有数据,我将使用id在数据库中搜索这些数据,更新字段并再次保存它们
顺便说一句,在开始时用小写字母命名方法是一种很好的做法。我尝试使用generatedValue,但不知道如何使用它,它一直说respondentId不能接受空值,实际上我将anotation改为@generatedValue,策略改为auto,似乎不起作用,我还尝试使用随机对象,它起作用了但似乎影响了我的查询结果