簡體   English   中英

如何在休眠中使用一對一/零映射

[英]How to use one to one/zero mapping in hibernate

假設我有兩個表:Person和Vehicle

人員記錄可以獨立存在,也就是說,人員可以與車輛關聯或不關聯。 但是沒有人就不可能存在車輛記錄。 簡而言之,

車輛表的Person_Id具有外鍵,其中Person_Id是人員表的主鍵。

現在在休眠狀態下定義這種關系,我已經使用了一對一的映射,如下所示:

public class Person

{

    private int person_id;

    @OnetoOne(mappedBy = "person", cascade = CascadeType.ALL)
    private Vehicle vehicle;
}

public class Vehicle {

    private int vehicle_id;

    @OnetoOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "person_id")
    private Person person;

}

現在,當我嘗試保存具有Vehicle的Person時,person對象將成功保存。 我只使用session.save(person)並且兩個對象都成功保存。 另一方面,如果我嘗試保存一個沒有Vehicle的Person,即vechile對象對該Person對象為null。 然后拋出一個異常,即

ConstraintVoilationException無法將null插入Vehicle.Person_Id列。

請幫助我了解,當我的車輛對象為空時如何保存人對象。

這似乎是1到1/0的映射。

如果您的數據庫架構是通過注釋生成的,請在Person中的OneToOne映射中使用可選參數。

如果您的數據庫是手工創建的,則在數據庫端允許為null。

來自: javadocs

請將此注釋添加到車輛類別人員屬性中

@NotFound(action=NotFoundAction.IGNORE)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM