Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como obter id após o objeto salvo em db no JPA?


A especificação JPA não garante que o objeto de entidade fornecido será atualizado após salvá-lo. Para obter a entidade JPA salva, você deve usar o valor de retorno do save() método. Por exemplo, seu serviço pode ser alterado desta forma:
@Service
public class ClaimDetailService {
    ...
    @Transactional
    public ClaimDetail saveClaimDetail(ClaimDetail claimDetail) {
        JpaRepository<ClaimDetail, Long> mailAuditLogLongJpaRepository = jpaRepositoryFactory.getRepository(ClaimDetail.class);
        return mailAuditLogLongJpaRepository.save(claimDetail);
    }
    ...
}

E seu código de exemplo seria:
claimDetail.setActive(1);
claimDetail.setVersion(new Long(1));
claimDetail.setCreatedBy(new Long(1));
claimDetail.setCreatedDate(new Date());
ClaimDetail savedClaimDetail = claimDetailService.saveClaimDetail(claimDetail);
int temp = savedClaimDetail.getID()

Além disso, embora não esteja diretamente relacionado ao seu problema, você não precisa criar os repositórios Spring Data da maneira que fez. Basta criar sua própria interface estendendo o JPARepository.