2016-05-19 15 views
2

Hibernateは子エンティティのIDを保存したくありません。私は次の表を持っています:Hibernateはnullの親IDを持つ子エンティティを保存します

@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はorder_idにnullで保存しています。関係に何か問題はありますか?または、私のコードに何か問題があるかもしれませんか?あなたはbidirectional @OneToManyをモデル化していると、ドキュメントの例に示すように、あなたが上値を設定するための責任があります

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 
    ) 
} 
+0

Routeオブジェクトを保存する前にorderプロパティを設定していますか? – Pace

答えて

2

:ここ

は、Orderエンティティを保存し、コードの一部であり、 子供エンティティ:

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 
    ) 
} 

PS。 Routeので、あなたのモデルのlangaugeレベルすなわち上の制約を強制するためのビットを変更することができentityです:

class Route internal constructor() { 
    lateinit var order: Order 

    constructor(order: Order) : this() { 
     this.order = order 
    } 
} 

は詳細についてはthis questionを参照してください。

関連する問題