es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Validación del esquema: columna faltante [event_id] en la tabla [process_event]. No estoy seguro(a) de por qué.

En mi aplicación de springboot tengo el siguiente modelo:

@Table(name = "process_event", indexes = [
    Index(name = "pe_eventId_idx", columnList = "eventId")
])
@Entity
internal class ProcessEvent {
    @EmbeddedId
    var id: ProcessEventId? = null
}

y

@Embeddable
internal class ProcessEventId : Serializable {
    @Column(name = "processId", nullable = false, length = 100)
    var processId: String? = null

    @Column(name = "eventId", nullable = false, length = 100)
    var eventId: String? = null

    override fun hashCode(): Int = Objects.hash(processId, eventId)
    override fun equals(other: Any?): Boolean {
        if (this === other) return true
        if (other == null || Hibernate.getClass(this) != Hibernate.getClass(other)) return false

        other as ProcessEventId

        return processId == other.processId &&
                eventId == other.eventId
    }

    companion object {
        private const val serialVersionUID = 2616696968741078700L
    }
}

Al ejecutar la aplicación, da el siguiente error Error al inicializar JPA EntityManagerFactory: [PersistenceUnit: default] No se pudo construir SessionFactory de Hibernate; la excepción anidada es org.hibernate.tool.schema.spi.SchemaManagementException: Validación de esquema: falta la columna [event_id] en la tabla [process_event]

Los modelos se generan utilizando IntelliJ. No tengo idea de por qué estoy recibiendo este error. ¿Alguna ayuda, por favor?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el error se debe a una columna faltante “event_id” en la tabla “process_event”. Esto probablemente se deba a una discrepancia entre el nombre de columna especificado en la clase “ProcessEvent” y el nombre real de columna en la base de datos.

    Para solucionar esto, puede intentar cambiar el nombre de la columna en la clase “ProcessEvent” para que coincida con el nombre real de la columna en la base de datos. Por ejemplo:

    @Table(name = "process_event", indexes = [
        Index(name = "pe_eventId_idx", columnList = "event_id") // cambiar el nombre de la columna a "event_id"
    ])
    @Entity
    internal class ProcessEvent {
        @EmbeddedId
        var id: ProcessEventId? = null
    
        // agregar esto para asignar el nombre de columna correcto
        @Column(name = "event_id", nullable = false, length = 100)
        var eventId: String? = null
    }
    

    Esto debería resolver el problema y permitir que la EntityManagerFactory de JPA se inicialice correctamente.

Comments are closed.