sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo obtener una identificación después del objeto guardado en db en JPA?

La especificación JPA no garantiza que el objeto de entidad proporcionado se actualice después de guardarlo. Para obtener la entidad JPA guardada, debe usar el valor de retorno de save() método. Por ejemplo, su servicio podría cambiarse de esta manera:

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

Y su código de muestra sería:

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

Además, aunque no está directamente relacionado con su problema, no necesita crear los repositorios de Spring Data de la forma en que lo ha hecho. Simplemente cree su propia interfaz ampliando JPARepository.