Mi chiedo solo se c'è un modo che io possa avere costruire la mia tabella di MySQL comeJPA + Hibernate: Come definire un vincolo di dover ON DELETE CASCADE
ALTER TABLE `USERINFO`
ADD CONSTRAINT `FK_USER_ID` FOREIGN KEY (`USERID`) REFERENCES `USERACCOUNT` (`USERID`)
ON DELETE CASCADE
ON UPDATE CASCADE;
Tuttavia, ho ottenuto solo questo nella mia DDL quando Hibernate ++ inizia APP a costruire la mia tabella di aver "<property name="hibernate.hbm2ddl.auto" value="create" />
"
ALTER TABLE `USERINFO` ADD CONSTRAINT `FK_USER_ID` FOREIGN KEY (`USERID`) REFERENCES `USERACCOUNT` (`USERID`);
Nelle mie classi, ho questi configurazione di annotazione,
// 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;
}
...
e,
// 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;
}
...
Si noti che, tavolo UserAccount è il/tabella principale genitore qui mentre UserInfo è una tabella estesa normalizzare ad un altro soggetto. Qualsiasi risposta sarebbe molto apprezzata. Sono solo curioso di sapere come è fatto, visto che amo lavorare anche su MySQL. Sono davvero abituato a cancellare un record dalla tabella genitore (USERACOUNT) che mi permetterebbe anche di mettere in cascata un record di delete thru dipendente dal record specifico da una tabella genitore/primaria.
Grazie!
Hai trovato una soluzione a questo problema utilizzando jpa? Sto avendo lo stesso problema e non voglio usare una relazione bidirezionale, creando il recupero pigro sul genitore. –