Java 循环之前或之后的JPA不正确合并

Java 循环之前或之后的JPA不正确合并,java,hibernate,jpa,Java,Hibernate,Jpa,我的功能如下: @Transactional void changeData(CardTO cardTO){ List<CardTO> sameParentCards = cardFactory.getSameParentCards(cardTO.getParentId()); cardTO.setArchived(true); entityManager.merge(cardTO); for(CardTO c: sameParentCard

我的功能如下:

@Transactional
void changeData(CardTO cardTO){
       List<CardTO> sameParentCards = cardFactory.getSameParentCards(cardTO.getParentId());

    cardTO.setArchived(true);
    entityManager.merge(cardTO);

    for(CardTO c: sameParentCards )
    {
       if(!c.getCardId.equals(cardTO.getCardId()))
       {
           c.setParentId(cardTO.getParentId());
           entityManager.merge(c);
           break;
       }
    } 
    }
cardTO.setArchived(true);
entityManager.merge(cardTO);
cardTO = cardFactory.getCardTO(cardTO.getId());
@Transactional
作废更改数据(CardTO CardTO){
列出sameParentCards=cardFactory.getSameParentCards(cardTO.getParentId());
cardTO.setArchived(true);
entityManager.merge(cardTO);
用于(卡到c:sameParentCards)
{
如果(!c.getCardId.equals(cardTO.getCardId()))
{
c、 setParentId(cardTO.getParentId());
实体管理器合并(c);
打破
}
} 
}
其中“getSameCards”方法返回父id等于给定卡id的cardTO列表。
此函数的结果不会将“存档”字段保存在数据库中,但在循环内所有内容都正确保存。循环后合并也会得到相同的结果!我的错误在哪里?

问题在于将实体保存在一个函数中后没有检索实体。因此,我在合并如下数据后检索了cardTO:

@Transactional
void changeData(CardTO cardTO){
       List<CardTO> sameParentCards = cardFactory.getSameParentCards(cardTO.getParentId());

    cardTO.setArchived(true);
    entityManager.merge(cardTO);

    for(CardTO c: sameParentCards )
    {
       if(!c.getCardId.equals(cardTO.getCardId()))
       {
           c.setParentId(cardTO.getParentId());
           entityManager.merge(c);
           break;
       }
    } 
    }
cardTO.setArchived(true);
entityManager.merge(cardTO);
cardTO = cardFactory.getCardTO(cardTO.getId());