Generowanie automatyczne ID w Sringu

Generowanie automatyczne ID w Sringu
TM
  • Rejestracja:prawie 4 lata
  • Ostatnio:około 2 miesiące
  • Postów:91
0

Próbuje dodac do bazy rekord np taki jak poniżej ale mój id jest null. Czy on nie powinieen się gerować autoamtycznie ?

Kopiuj
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity 
public class Person {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private String comments;
    }
Kopiuj
  @Autowired
    PersonRepositiry PersonRepository;
    
    
    public void addRecord(Person person){
        Pesron newPerson = new Person();
        person.setName("Adam");
        person.setComments("Test");
        PersonRepository.save(person);
    }
Kopiuj
@Repository
public interface PersonRepository extends JpaRepository<Person, Long> {

}

Jak mam gdzies literówkę to proszę nie zawracac na to uwagi teraz pisalem do z palca

SW
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:67
4

Ale wiesz, że on jest generowany dopiero jak zapiszesz entity do bazy? Metoda save powinna zwrócić obiekt z wygenerowanym id

TM
  • Rejestracja:prawie 4 lata
  • Ostatnio:około 2 miesiące
  • Postów:91
0

Czyli metoda save wygeneruje mi ID ? A czy różnic się save od saveAndFlush ?

aolo23
  • Rejestracja:ponad 7 lat
  • Ostatnio:3 miesiące
  • Postów:186
0

weź zrób to po ludzku i zacznij używać UUID, java ma w defaultowym pakiecie, skończą Ci się wszystkie problemy z unikalnością itp


Exception oznacza więcej niż tysiąc słów.
SW
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:67
1

jak zrobisz save to spring nie doda tego rekordu natychmiasty, będzie czekać aż zakończysz operacje (np. commit) i dopiero wtedy doda. Flush wpycha do bazy natychmiast - https://www.baeldung.com/spring-data-jpa-save-saveandflush

S9
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Warszawa
  • Postów:1092
1

@GeneratedValue(strategy = GenerationType.AUTO)

GenerationType też chyba zalezy od bazy danych. W Postgresie np. identity jest najlepsze i jest generowane przez BD po insercie.


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.