Si encuentras algún detalle que no comprendes puedes comentarlo y te ayudaremos rápidamente.
Solución:
Buscando respuestas a este problema, me topé con este enlace
Parece que Hibernate/JPA no puede crear automáticamente un valor para sus propiedades sin identificación. los @GeneratedValue
La anotación solo se usa junto con @Id
para crear números automáticos.
los @GeneratedValue
la anotación simplemente le dice a Hibernate que la base de datos está generando este valor por sí misma.
La solución (o alternativa) sugerida en ese foro es crear una entidad separada con una identificación generada, algo como esto:
@Entity public class GeneralSequenceNumber @Id @GeneratedValue(...) private Long number; @Entity public class MyEntity @Id .. private Long id; @OneToOne(...) private GeneralSequnceNumber myVal;
encontre eso @Column(columnDefinition="serial")
funciona perfecto pero solo para PostgreSQL. Para mí, esta fue la solución perfecta, porque la segunda entidad es una opción “fea”.
una llamada a saveAndFlush
en la entidad también es necesario, y save
no será suficiente para completar el valor de la base de datos.
Sé que esta es una pregunta muy antigua, pero se muestra primero en los resultados y jpa ha cambiado mucho desde la pregunta.
La forma correcta de hacerlo ahora es con el @Generated
anotación. Puede definir la secuencia, establecer el valor predeterminado en la columna para esa secuencia y luego asignar la columna como:
@Generated(GenerationTime.INSERT)
@Column(name = "column_name", insertable = false)
Calificaciones y reseñas
Recuerda algo, que te permitimos reseñar .