我只是想知道是否有這樣我可以有建立我的MySQL表作爲JPA + Hibernate的:如何界定具有ON DELETE CASCADE
ALTER TABLE `USERINFO`
ADD CONSTRAINT `FK_USER_ID` FOREIGN KEY (`USERID`) REFERENCES `USERACCOUNT` (`USERID`)
ON DELETE CASCADE
ON UPDATE CASCADE;
不過,我只得到了這個在我的DDL的方式約束當Hibernate ++ JPA開始建設有 「<property name="hibernate.hbm2ddl.auto" value="create" />
」
ALTER TABLE `USERINFO` ADD CONSTRAINT `FK_USER_ID` FOREIGN KEY (`USERID`) REFERENCES `USERACCOUNT` (`USERID`);
在我的班級我的表,我有這些註釋的設置,
// UserAcc.java
@Entity
@Table(name = "USERACC")
public class UserAcc implements Serializable {
private static final long serialVersionUID = -5527566248002296042L;
@Id
@Column(name = "USERID")
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer userId;
@OneToOne(mappedBy = "userAcc")
private UserInfo userInfo;
....
public UserInfo getUserInfo() {
return userInfo;
}
public void setUserInfo(UserInfo userInfo) {
this.userInfo = userInfo;
}
...
,並
// UserInfo.java
@Entity
@Table(name = "USERINFO")
public class UserInfo implements Serializable {
private static final long serialVersionUID = 5924361831551833717L;
@Id
@Column(name = "USERINFO_ID", nullable=false)
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer userInfoId;
@OneToOne(cascade = {CascadeType.ALL})
@JoinColumn(name="USERID", nullable=false)
@ForeignKey(name = "FK_USER_ID")
private UserAcc userAcc;
public Integer getUserInfoId() {
return userInfoId;
}
public void setUserInfoId(Integer userInfoId) {
this.userInfoId = userInfoId;
}
...
需要注意的是,UserAccount表是父/主表在這兒的UserInfo是一個擴展表正常化另一個實體。任何答案將不勝感激。我只是好奇它是如何完成的,因爲我喜歡在MySQL中工作。我真的很習慣從父表中刪除記錄(USERACOUNT),這也將允許我級聯刪除通過子記錄,這取決於來自父/主表的特定記錄。
謝謝!
您是否使用jpa找到了解決此問題的解決方案?我遇到了同樣的問題,我不想使用雙向關係,從而在父級上創建延遲抓取。 – 2013-11-19 09:39:04