對於數據庫中 article表的id設置爲自動增長,article_data的id不設置自動增長,配置如下文所示。
保存的時候 必須是articleDate.set(article), save(articleData) 這樣保存article_data級聯保存article,這樣就可以成功;
如果是保存article,級聯保存article_data 就會報id不存在,不能保存的錯誤。
CREATE TABLE `article` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
....)
CREATE TABLE `article_data` ( `article_id` int(10) unsigned NOT NULL DEFAULT '0',
....)
@Table(name = "article_data")
public class AricleDetail {
private static final long serialVersionUID = 1782600851147896229L;
@Id
@GeneratedValue(generator = "pkGenerator")
@GenericGenerator(name = "pkGenerator", strategy = "foreign", parameters = @Parameter(name = "property", value = "aricle"))
@Column(name = "article_id")
private Integer articleId;
private String content;
@OneToOne(mappedBy="aricleDetail",optional=false)
private Aricle aricle;
.....
}
@Entity
@Table(name = "article")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Aricle{
private int id;
private String title;
private String subTitle;
private Date addTime;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@OneToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL, optional = false)
@PrimaryKeyJoinColumn
public AricleDetail getAricleDetail() {
return aricleDetail;
}
public void setAricleDetail(AricleDetail aricleDetail) {
this.aricleDetail = aricleDetail;
}
......
}
參考:http://javne.iteye.com/blog/407123