Aqui você tem exemplos de geração automática de ID's para banco de dados Oracle e MySql usando Hibernate.
Oracle
...
@Entity
@Table(name = "grupo")
public class Grupo implements GenericModel {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "GRUPO_ID_SEQ")
@SequenceGenerator(name = "GRUPO_ID_SEQ", sequenceName = "GRUPO_ID_SEQ", allocationSize = 1)
@Column(nullable=false)
private Long id_grupo;
...
A sequence GRUPO_ID_SEQ deve existir no banco de dados.
Considerando que MySql não tem sequences, se você tentar usar o código acima com MySql você terá a exceção abaixo em tempo de execução:
Caused by: org.hibernate.MappingException: Dialect does not support sequences
at org.hibernate.dialect.Dialect.getSequenceNextValString(Dialect.java:619)
at org.hibernate.id.SequenceGenerator.configure(SequenceGenerator.java:88)
at org.hibernate.id.SequenceHiLoGenerator.configure(SequenceHiLoGenerator.java:66)
at org.hibernate.id.IdentifierGeneratorFactory.create(IdentifierGeneratorFactory.java:127)
MySQL
...
@Entity
@Table(name = "grupo")
public class Grupo implements GenericModel {
@Id
@GeneratedValue
@Column(nullable=false)
private Long id_grupo;
...
O campo id_grupo deve ser marcado como auto incremento no MySql.