/ / Spring Update operacji JPA - wiosna, jpa, spring-data-jpa

Wiosenna operacja aktualizacji JPA - wiosna, jpa, wiosna-data-jpa

Pracuję nad Spring JPA. W ramach tego muszę zaktualizować obiekt ignorując kilka atrybutów. Poniższy kod stara się zaimplementować operację aktualizacji.

@Transactional
public void updateDMove(DTCRto jsonRto){
//copyProperties(Object source, Object target, String[] ignoreProperties)
DMove dMoveDB = dMoveRepo.findDMove(jsonRto.getLn(), jsonRto.getDriver(), jsonRto.getType());
DMove dMoveRto = jsonRto.convertToDMove(jsonRto);
BeanUtils.copyProperties(dMoveRto,drayMoveDB, new String[] {"moveId", "created","lastchange","locations","status"});
dMoveRepo.save(dMoveDB);
}

DMove: klasa modelu, która wymaga aktualizacji. dMoveRepo: odpowiednia klasa repozytorium. dMoveRto: przychodzący obiekt. dMoveDb: obiekt istniejący w bazie danych. moveId: to PK w klasie DMove.

Czy ktoś może zasugerować mi, w jaki sposób można przeprowadzić aktualizację w Spring JPA?

Dzięki.

Odpowiedzi:

0 dla odpowiedzi № 1

detached entity passed to persist oznacza, że ​​hibernacja nie rozpoznaje istoty, którą przekazałeś do aktualizacji, ponieważ dMoveDB nie jest persistent obiekt, straciłeś to, kiedy użyłeś tej linii BeanUtils.copyProperties(dMoveRto,drayMoveDB, new String[] {"moveId", "created","lastchange","locations","status"});

Proponuję usunąć moveId więc jednostka, którą próbujesz zaktualizować, zachowuje oryginalny klucz podstawowy i pozostaje jako persistent obiekt.

Ostatnią rzeczą, musisz upewnić się, że obiekt otrzymasz dMoveRepo.findDMove(...) nie jest null