1
resposta

Como usar o método post em uma tabela particionada

Eu particionei uma tabela baseado na documentação do postgres (https://www.postgresql.org/docs/current/ddl-partitioning.html), usei datas para particionar a tabela e aparentemente está funcionando bem, fiz uns inserts por sql e funcionou normalmente de acordo com a data que eu inseria, porém, utilizando o Spring Boot, consigo usar os métodos GET, PUT e DELETE, mas o método POST exibe o seguinte erro:

"statusCode": 500, "message": "The database returned no natively generated identity value; nested exception is org.hibernate.HibernateException: The database returned no natively generated identity value"

Meu id está configurado com o auto increment e funcionava normalmente antes da partição:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private long id;

Um Json de exemplo, que eu passo no método POST e apresenta o erro:

{
    "name": "teste",
    "date": 1682510400000
}

Um Json de exemplo que eu uso pelo método PUT,que funciona normalmente para alterar dados que adicionei por sql:

{
    "id": 1,
    "name": "Teste - alteração",
    "date": 1682510400000
}

Alguém sabe o que deve ser feito no spring para resolver o problema ou sabe de um artigo ou documentação que pode me ajudar?

1 resposta

Oi Yago!

Esse erro indica que a coluna id na sua tabela não está configurada como auto increment.

Obs: No Postgresql geralmente se utiliza sequences para gerenciar as chaves primárias das tabelas e não o auto increment.