Boa noite Wilian,
Lendo a documentação de GenerationType, vi que o GenerationType.IDENTITY associa primary keys (PKs) à entidade usando a coluna da base que é ID, o que talvez não funcione se você tiver uma PK composta ou que seja simples, mas não numérica.
Caso a sua base tenha suporte a Sequences, talvez o melhor seja usar GenerationType.SEQUENCE, que associa a PK da entidade a uma sequence da base. Vantagens:
1) Na base, você pode iniciar a sequence com max(id)+1 (valor máximo do ids atualmente na base + 1) por exemplo, e, a partir daí, o Hibernate vai pegando os próximos valores desta sequence.
2) Como é uma sequence, você não precisará ficar se preocupando com dar id+1 pra fugir do problema de violação de PK.
Ainda pesquisando sua dúvida, achei também este link, em que há uma outra anotação pra usar sequence no JPA: @SequenceGenerator.
Espero tê-lo ajudado a resolver o problema.
Abraço,
Rafael.