Generowanie automatyczne ID w Sringu

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 ?

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity 
public class Person {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private String comments;
    }
  @Autowired
    PersonRepositiry PersonRepository;
    
    
    public void addRecord(Person person){
        Pesron newPerson = new Person();
        person.setName("Adam");
        person.setComments("Test");
        PersonRepository.save(person);
    }
@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

4

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

0

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

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

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

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1