Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie bekomme ich die ID nach dem gespeicherten Objekt in der Datenbank in JPA?

Die JPA-Spezifikation garantiert nicht, dass das bereitgestellte Entitätsobjekt nach dem Speichern aktualisiert wird. Um die gespeicherte JPA-Entität zu erhalten, müssen Sie den Rückgabewert von save() verwenden Methode. Ihr Dienst könnte beispielsweise folgendermaßen geändert werden:

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

Und Ihr Beispielcode wäre:

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

Auch wenn dies nicht direkt mit Ihrem Problem zusammenhängt, müssen Sie die Spring Data-Repositorys nicht so erstellen, wie Sie es getan haben. Erstellen Sie einfach Ihre eigene Schnittstelle, die JPARepository erweitert.