Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/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 对于具有共享集合引用错误的嵌套对象,Beanutils.copyProperties失败_Java_Spring_Hibernate - Fatal编程技术网

Java 对于具有共享集合引用错误的嵌套对象,Beanutils.copyProperties失败

Java 对于具有共享集合引用错误的嵌套对象,Beanutils.copyProperties失败,java,spring,hibernate,Java,Spring,Hibernate,每当遇到集合时,BeanUtils.copyProperties就会失败 @Transactional public void createFreshAmendmentsForRestructureEvent(CcrRestructureEventMetadata restructureEventMetadata, String token, String racf) { List<Contract> contracts = getActiveContract

每当遇到集合时,
BeanUtils.copyProperties
就会失败

@Transactional
    public void createFreshAmendmentsForRestructureEvent(CcrRestructureEventMetadata restructureEventMetadata, String token, String racf) {
        List<Contract> contracts = getActiveContractsByRestructureEvent(restructureEventMetadata);

        if (isEmpty(contracts)) {
            log.info("No existing contract amendments found under the given restructure event [{}]...", restructureEventMetadata.getId());
        } else {
            // Create new Contract submission record
            contracts
                    .forEach(c -> {
                        Contract newContract = new Contract();
                        BeanUtils.copyProperties(c, newContract);
                        newContract.setRestructureEvent(restructureEventMetadata.getRestructureEvent());
                        newContract.setCreditStatus(restructureEventMetadata.getCreditStatus());
                        addNewContract(newContract, new java.util.Date(), token, racf);
                    });

            // Close existing contracts
            contracts.stream()
                    .peek(c -> c.setEffectiveToDt(new java.util.Date()))
                    .forEach(contractRepository::save);
        }
    }
以下是带有集合参考的
合同
实体部分:

...

    @OneToMany( fetch=FetchType.EAGER)
    @JoinColumn(name="CONTRACT_ID" )
    public Set<ContractPortfolioCode> contractPortfolioCodes;

...
。。。
@OneToMany(fetch=FetchType.EAGER)
@JoinColumn(name=“合同号”)
公共集合合同;
...

有人能帮忙解决这个问题吗?

嗯。。。它没有失败,它正在做它应该做的事情——将集合引用复制到新对象。但是,您应该做的是确保创建一个新的集合(并且,正如您已经了解到的,
BeanUtils.copyProperties
不是该作业的正确工具)
...

    @OneToMany( fetch=FetchType.EAGER)
    @JoinColumn(name="CONTRACT_ID" )
    public Set<ContractPortfolioCode> contractPortfolioCodes;

...