Per mysql Ti consiglierei di seguire:
Al tuo tavolo messages nel campo id aggiungi la dichiarazione auto_increment :
create table messages(
...
id int not null auto_increment,
...
primary key (id)
)
Alla dichiarazione di entità utilizzare
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
Questo parla con JPA usa la funzione di incremento automatico di MySQL
Se non è applicabile (ad esempio potresti voler creare un'altra entità correlata nella stessa transazione) usa la strategia TABLE (per maggiori dettagli vedi https://www.objectdb.com/java/jpa/entity/generated )