Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottenere l'ID dopo l'oggetto salvato in db in JPA?

La specifica JPA non garantisce che l'oggetto entità fornito verrà aggiornato dopo averlo salvato. Per ottenere l'entità JPA salvata devi utilizzare il valore di ritorno di save() metodo. Ad esempio, il tuo servizio potrebbe essere modificato in questo modo:

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

E il tuo codice di esempio sarebbe:

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

Inoltre, sebbene non sia direttamente correlato al tuo problema, non è necessario creare i repository Spring Data nel modo in cui l'hai fatto. Crea la tua interfaccia che estende JPARepository.