Dla mysql Polecam przestrzeganie:
Przy twoim stole messages w polu id dodaj deklarację auto_increment :
create table messages(
...
id int not null auto_increment,
...
primary key (id)
)
Przy deklaracji podmiotu użyj
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
To mówi o użyciu JPA funkcji auto-inkrementacji MySQL
Jeśli nie ma to zastosowania (na przykład możesz chcieć utworzyć powiązany inny podmiot w tej samej transakcji) użyj strategii TABELA (więcej szczegółów znajdziesz w https://www.objectdb.com/java/jpa/entity/generated )