Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何持久化通过JPA从JTable检索的实体对象?_Java_Jpa_Jtable - Fatal编程技术网

Java 如何持久化通过JPA从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

几天来,我一直试图保存从导入的Excel工作表的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);
}
@操作
公共图书馆{
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,似乎不起作用,我还尝试使用随机对象,它起作用了但似乎影响了我的查询结果