Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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 弹簧靴插入参数_Java_Oracle_Spring Boot_Sql Insert - Fatal编程技术网

Java 弹簧靴插入参数

Java 弹簧靴插入参数,java,oracle,spring-boot,sql-insert,Java,Oracle,Spring Boot,Sql Insert,我需要在我的spring项目中更新person类中的person_id。代码部分如下。但是插入查询在存储库部分不起作用。我是否需要将其作为参数逐个发送 public void save(){ List<Person> personList = service.findByAll(); for (Person person : personList) { personRepository.getNextSequence(

我需要在我的spring项目中更新person类中的person_id。代码部分如下。但是插入查询在存储库部分不起作用。我是否需要将其作为参数逐个发送

public void save(){
     List<Person> personList = service.findByAll();
            for (Person person : personList) {
                personRepository.getNextSequence(person);
            }
    }


@Repository
   public interface PersonRepository extends JpaRepository<Person, Integer> {
    
        @Modifying
        @Query(value = "INSERT INTO PERSON(person_id,name) VALUES(PERSON_ID_SEQ.NEXTVAL,:person.name) ", nativeQuery = true)
        public void getNextSequence( Person  person);
    
     }
public void save(){
List personList=service.findByAll();
for(个人:个人列表){
personRepository.getNextSequence(person);
}
}
@存储库
公共接口PersonRepository扩展了JpaRepository{
@修改
@查询(value=“插入到PERSON(PERSON\u id,name)值(PERSON\u id\u SEQ.NEXTVAL,:PERSON.name)”,nativeQuery=true)
公共无效getNextSequence(个人);
}

要使用新ID保存同一对象,必须分离实体,将ID设置为0并保存它。这将使用新ID保存同一对象

所以代码应该是这样的:

// somewhere in the code
@Autowired
private EntityManager entityManager;    

List<Person> personList = service.findByAll();

for (Person person : personList) {
    entityManager.detach(person);
    person.setId(0);
}

personRepository.saveAll(personList);
//代码中的某个地方
@自动连线
私人实体管理者实体管理者;
List personList=service.findByAll();
for(个人:个人列表){
实体经理(人);
person.setId(0);
}
personRepository.saveAll(personList);

为什么?为什么不直接调用
PersonRepository
上的
save
,让JPA来处理呢。您当前正在使用JPA并努力解决它。我正在使用“保存”创建一个新记录,我要做的是更改现有记录的id。您正在执行一个正在创建新记录的插入操作。很抱歉,我解释不完整,旧的id信息将停止,我需要创建一个新的id克隆。然后创建一个新的人,复制数据(没有id)并调用save。