spring3.0一對一保存報錯可能的緣由以及解決方法

1.生成框架時有沒有改變domain中一對一的兩個表的配置: app

正確的方式是:例如project的id和projectArtical中的projectId相關聯,而project是主表,projectArtical是從表, 框架

而project的id配置和關聯關係的配置要改爲以下: dom



@Column(name = "ID", nullable = false)
@Basic(fetch = FetchType.EAGER)
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@XmlElement
Integer id; fetch


/**
*/
@OneToOne(mappedBy = "project", fetch = FetchType.LAZY)
@XmlElement(name = "", namespace = "")
ProjectArtical projectArtical; spa

projectArtical的projectId的配置和關聯關係的配置改爲以下: ip

@Column(name = "Project_ID", nullable = false)
@Basic(fetch = FetchType.EAGER)
@Id
@XmlElement
Integer projectId; io

切記要把用MyEclipse for Spring10.6自動生成的 cli

@PrimaryKeyJoinColumn
@OneToOne(fetch = FetchType.LAZY)
@XmlElement(name = "", namespace = "")
Project project; 配置

改爲以下的方式:
@OneToOne(fetch = FetchType.LAZY)
@JoinColumns({ @JoinColumn(name = "Project_ID", referencedColumnName = "ID") })
@XmlElement(name = "", namespace = "")
Project project;


2.在保存一對一個的表,兩表前後保存時,必須先保存主表而後保存副表,在保存主表的同時,必須先將主表的副表給先設置爲空,例如project.setProjectArtical(null); 而後再保存projectArtical表。 map

然而在刪除的時候必須先刪除projectArtical表,再來刪除project表。

相關文章
相關標籤/搜索