Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment obtenir un identifiant après avoir enregistré un objet dans la base de données dans JPA ?

La spécification JPA ne garantit pas que l'objet d'entité fourni sera mis à jour après l'avoir enregistré. Pour obtenir l'entité JPA enregistrée, vous devez utiliser la valeur de retour du save() méthode. Par exemple, votre service pourrait être modifié de la manière suivante :

@Service
public class ClaimDetailService {
    ...
    @Transactional
    public ClaimDetail saveClaimDetail(ClaimDetail claimDetail) {
        JpaRepository<ClaimDetail, Long> mailAuditLogLongJpaRepository = jpaRepositoryFactory.getRepository(ClaimDetail.class);
        return mailAuditLogLongJpaRepository.save(claimDetail);
    }
    ...
}

Et votre exemple de code serait :

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()

De plus, bien que cela ne soit pas directement lié à votre problème, vous n'avez pas besoin de créer les référentiels Spring Data comme vous l'avez fait. Créez simplement votre propre interface étendant JPARepository.