Saltar al contenido

Secuencia JPA de Hibernate (no Id)

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 .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *