Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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
JPA合并似乎不起作用_Jpa_Persistence_Insert Update - Fatal编程技术网

JPA合并似乎不起作用

JPA合并似乎不起作用,jpa,persistence,insert-update,Jpa,Persistence,Insert Update,我正在运行以下代码,根据从CSV文件读取的数据更新数据库。我试着调试,检查控制台,它正在运行800条记录。我没有得到任何错误,但只插入了第一条记录。如果我使用persist而不是merge,则会出现“无法持久化分离对象”错误 这是我的updateAddress方法,基本上是更新一些字段 private void updateAddress(String[] data, AddressEntity address) throws NoSuchMethodException, InvocationT

我正在运行以下代码,根据从CSV文件读取的数据更新数据库。我试着调试,检查控制台,它正在运行800条记录。我没有得到任何错误,但只插入了第一条记录。如果我使用persist而不是merge,则会出现“无法持久化分离对象”错误

这是我的updateAddress方法,基本上是更新一些字段

private void updateAddress(String[] data, AddressEntity address) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
    //setting the column data
    for (int i = 0; i < data.length; i++) {
        final String column = dataColumns.get(i);
        if (!column.equals("#IGNORE#")) {
            setProperty(address, column, data[i]);
        }
    }
    for (String field : this.defaultColumns.keySet()) {
        if (!field.startsWith("#"))
            setProperty(address, field, this.defaultColumns.get(field));
    }        
}
private void updateAddress(字符串[]数据,地址实体地址)抛出NoSuchMethodException、InvocationTargetException、IllegaAccessException{
//设置列数据
对于(int i=0;i
这是我的persistence.xml供您参考

<persistence-unit name="agisdb-PU">
    <class>com.agis.livedb.domain.AddressEntity</class>
    <properties>
        <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/agisdb"/>
        <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
        <property name="toplink.jdbc.user" value="root"/>
        <property name="toplink.jdbc.password" value="password"/>
    </properties>
</persistence-unit>

com.agis.livedb.domain.AddressEntity
你认为我遗漏了什么吗? 谢谢!
Robert

好的,问题在于我的地址实体对象,我必须在id字段中添加以下内容。 @GeneratedValue(策略=GenerationType.identity)

谢谢dfa!
Robert

它与merge一起工作,但只保存了第一条记录。。没有例外,但其余记录未保存。。。
<persistence-unit name="agisdb-PU">
    <class>com.agis.livedb.domain.AddressEntity</class>
    <properties>
        <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/agisdb"/>
        <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
        <property name="toplink.jdbc.user" value="root"/>
        <property name="toplink.jdbc.password" value="password"/>
    </properties>
</persistence-unit>