Hibernate guarda la entidad hija con nulo ID padre

Hibernate no quiere save ID para entidades secundarias. Tengo las siguientes tablas:

@Entity @Table(name = "ct_orders") data class Order( @Id @Column(name = "id") @GeneratedValue(strategy = javax.persistence.GenerationType.IDENTITY) val id: Int = 0, @OneToMany(fetch = FetchType.LAZY, cascade = arrayOf(CascadeType.ALL), mappedBy = "order") val route: List<Route>? = null, ... ) @Entity @Table(name = "ct_routes") @JsonIgnoreProperties("id", "order") data class Route( @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Int = 0, @Column val location: Point = GeoHelpers.point(), @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "order_id") val order: Order? = null, @Column val title: String = "" ) 

ct_routes guardando con null en order_id. ¿Hay algún problema con las relaciones? O, ¿puede haber algún error en mi código?

Aquí está la parte del código, que guarda una entidad Order:

 val order = orderRepository.save(Order( ... route = GeoHelpers.placesListToEntities(data.places), ... )) fun placesListToEntities(points: List<PlaceDto>) = points.map { Route( location = Helpers.geometry(it.location.latitude, it.location.longitude), title = it.title ) } 

Está modelando bidireccionalmente @OneToMany y como se muestra en el ejemplo de la documentation, usted es responsable de establecer el valor principal en la entidad secundaria :

 val order = orderRepository.save(Order(...).apply{ ... route = GeoHelpers.placesListToEntities(this, data.places), ... }) fun placesListToEntities(order:Order, points: List<PlaceDto>) = points.map { Route( order = order, location = Helpers.geometry(it.location.latitude, it.location.longitude), title = it.title ) } 

PD. Como Route es una entidad, puedes cambiar tu model un poco para imponer las restricciones en el nivel de idioma, es decir:

 class Route internal constructor() { lateinit var order: Order constructor(order: Order) : this() { this.order = order } } 

Vea esta pregunta para más detalles.

  • El controller de exception Spring Boot @ControllerAdvice no se activa
  • Enfoque correcto para la class de Kotlin inyectada de constructor inmutable
  • ¿Cómo recuperar y encontrar el estado actual en Spring State Machine?
  • Angular: cómo publicar un file en el server al enviar el formulario
  • Spring @Autowire no trabaja en Kotlin
  • @Param no funciona en Spring Data JPA
  • Actualización parcial REST en Spring Boot y Kotlin
  • ¿Por qué necesito un repository y un service + contrato?
  • Excepción de puntero nulo en Spring Proxy Class y Kotlin
  • @PostConstruct no se llama cuando se usa Kotlin BeanDefinitionDsl
  • Instant no se puede serializar al formatting apropiado incluso con jackson-datatype-jsr310