За mysql
Бих ви препоръчал следното:
На масата messages
в полето id
добавете декларация auto_increment
:
create table messages(
...
id int not null auto_increment,
...
primary key (id)
)
При декларация на обект се използва
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
Това говори за използването на функцията за автоматично увеличаване на JPA на MySQL
Ако не е приложимо (например може да искате да създадете свързан друг обект в същата транзакция), използвайте стратегия TABLE (за повече подробности вижте http://www.objectdb.com/java/jpa/entity/generated )