对于数据库中 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