Hej,
Podczas próby zapisu dostaję wyjątek rzucany przez org.springframework.orm.jpa.JpaSystemException dotyczący ze jest zaznaczony parametr rollback only. Wiem z czym jest błąd związany ale nie wiem jak mogę to obejść.
Błąd występuje dlatego, że metoda execute() rzuca wyjątkiem
Poniżej mój psełdokod:
public class MyService {
MyJpaRepository myJpaRepository;
EntityManager entityManager;
@Transactional
@Override
public void doSomething(){
MyObject myObject = myJpaRepository.findOne(1L);
Try<Integer>result = updateChild(myObject.getchild());
myObject .addResult(result .get());
myJpaRepository.save(myObject );
}
Try<Integer>updateChildren(MyObjectChilden child) {
String query = child.prepareQuery("xxx");
Try<Integer> result = Try.of(() -> execute(query));
if(result.isFailure()){
String query = child.prepareQuery("YYY"); //jak rzuci błąd unique constraint validation zmieniam na "YYY"
result = Try.of(() -> execute(query ));
}
return result
}
private Integer execute(String query) {
final Query nativeQuery = entityManager.createNativeQuery(query); //Może rzucić błąd unique constraint validation
return (Integer) nativeQuery.getSingleResult();
}
}
Ogólnie idea jest taka ze wydziełiłem execute() zeby móc ją wielokrotnie wykorzystać ale z innym query, niestety ta metoda rzuca wyjątek przez co zaznaczony jest parametr rollback only i nie ma możliwości zapisu do bazy
scibi92scibi92