[英]JPA insert foreign key as null
我有2個實體,其中一個是另一個的外鍵:
@Entity
@Table(name = "XXXX")
@XmlRootElement
public class Drfacopt implements Serializable {
@Id
@NotNull
@Basic(optional = false)
@Column(name = "OPCOD")
private Short optionCode;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 50)
@Column(name = "OPCODDH")
private String optionCodeDescription;
}
@Entity
@Table(name = "YYYY")
@XmlRootElement
public class Drfac03f implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected Drfac03fPK drfac03fPK;
@JoinColumn(name = "F3OPT", referencedColumnName = "OPCOD" )
@ManyToOne(optional = false)
private Drfacopt relationCode;
}
當我嘗試使用em.persist(drfac03f)
插入新記錄時, em.persist(drfac03f)
此異常:
During synchronization a new object was found through a relationship that was not marked cascade PERSIST
如何將外鍵插入為null? 我要使用@Null,以便當用戶直接向Drfacopt插入記錄時,它不會為null或零,但是如果通過Drfac03f,則可以將其插入為null。 如何才能做到這一點?
當您嘗試em.persist(myObj)
並收到錯誤消息:
在同步期間,通過未標記為層疊PERSIST的關系找到了新對象
這意味着您要保留的對象( myObj
) 具有與myObj
具有[外鍵]關系的字段/屬性 (例如foreignProperty
),並且在myObj
之前還沒有foreignProperty
被foreignProperty
,也沒有用CascadeType.PERSIST
標記該關系。是, 數據庫中尚不存在foreignProperty
。
解決方案是在設置或設置關系CascadeType.PERSIST
之前持久foreignProperty
。
如何將外鍵插入為null?
由於要將外部字段設置為null
,因此您不應該在此之前將其持久保存(不需要“持久化”一個null
對象)。
因此,只需將字段設置為null
並照常繼續執行myObj
。
我試圖堅持,但收到錯誤“
Null values not allowed in column or variable ...
”
此錯誤信息表明您試圖將null
值持久保存在您無法保存的地方。 有一些可能的原因:
NOT NULL
。 解決方案:將其設置為NULL
。 (optional = false)
。 解決方案是將optional
屬性設置為true
或將其完全刪除。 (注意:這可能取決於實現,因此需要確認。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.