Zacząłem ogarniać JPA i nie ogaraniam xD w sensie ogarniam ale nie wiem czy dobrze, czy to poniżej to poprawny sposób relacji One to Many? Czy kolejnosc zapisywania powinna być inna? Jak na 1 Person to dość dużo linii Hibernate się wykonuje :/ #spring #hibernate
@MrFisherman Childy sa zapisywane automatycznir.. powinny byc wiec jak zapiszesz car1 i car2 to person powinien sie utworzyc tj zapisac w bazie.. tak samo jak zapuszesz persona z 2 carami to cary powinny zapisac sie w bazie
@CichySzelestOka: jak zapisuje same Carsy bez zapisania Person wcześniej to otrzymuje:
Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : com.mrfisherman.testjpa.Entity.Car.owner -> com.mrfisherman.testjpa.Entity.Person; nested exception is java.lang.IllegalStateException: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : com.mrfisherman.testjpa.Entity.Car.owner -> com.mrfisherman.testjpa.Entity.Person a jak zapisuje sam Person bez Cars to cars[] mam puste i tych samochodów nie ma w
@xnor: @CichySzelestOka: no dobra teraz dodałem (choc wczesniej to miałem ale usunąłem) i też działa (person.setCars(List.of(car1, car2)); lub person.addCar(car1); person.addCar(car2);) jednak dalej jest dużo linii od hibernate, chyba że tak ma byc to humor gitówa
@MrFisherman: ilość zapytań jest zupełnie normalna, na początku sobie wyciąga id z sekwencji, później robi trzy inserty, a następnie select na person i kolejny select na car (bo jest lazy)
@xnor: @CichySzelestOka: ale to w takim razie strasznie długo trwa to dodawanie rekordów xD o ile select na wszystko otrzymuje w sekunde to dodawanie trwa milion lat jak mam np 50 i wiecej rekordów
@xnor: bazę mam na amazonie te darmową 1 vCpu i 1 GB Ram, 1 insert zajmuje ok 200ms czyli 50 rekordów to jakieś 10 sekund, chyba dość dużo ale nic nie poradze widocznie
Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : com.mrfisherman.testjpa.Entity.Car.owner -> com.mrfisherman.testjpa.Entity.Person; nested exception is java.lang.IllegalStateException: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : com.mrfisherman.testjpa.Entity.Car.owner -> com.mrfisherman.testjpa.Entity.Person
a jak zapisuje sam Person bez Cars to cars[] mam puste i tych samochodów nie ma w
bo nie dodałeś samochodów do listy
cars
twojej instancjiperson
coś musisz jeszcze źle robić jeśli dodawanie 50 rekordów trwa milion lat, przy pustej bazie to powinno się w rzędzie pojedynczych milisekund zamknąć