Kann nicht hinzufügen oder aktualisieren ein child row: a foreign key constraint fails - Bidirektionales mapping in hibernate

Hallo ich habe ein problem mit JPA...

DB:

Kann nicht hinzufügen oder aktualisieren ein child row: a foreign key constraint fails - Bidirektionales mapping in hibernate

Java-Klassen (irrelevante Felder sind weggelassen):

Benutzer:

@Entity
public class User{
    @Id
    private int iduser;

    //bi-directional many-to-one association to UserInfo
    @OneToMany(mappedBy="user", cascade= {CascadeType.ALL}, fetch=FetchType.EAGER)
    private List<UserInfo> userInfos;
}

UserInfo:

@Entity
@Table(name="user_info")
public class UserInfo {
    @Id
    @Column(name="iduser_info")
    private int iduserInfo;

    //bi-directional many-to-one association to User
    @ManyToOne  
    private User user;
}

Derzeit, wenn ich versuche, dies zu tun (habe ich wieder weggelassen-Einstellung irrelevant Felder):

User u = new User();            
UserInfo info = new UserInfo();
u.addUserInfo(info);

em.persist(u); //save user

Bekomme ich diesen Fehler:

Cannot add or update a child row: a foreign key constraint fails (`webstore`.`user_info`, CONSTRAINT `fk_user_info_user` FOREIGN KEY (`user_iduser`) REFERENCES `user` (`iduser`) ON DELETE NO ACTION ON UPDATE NO ACTION)

Ich habe schlug meinen Kopf den ganzen Tag und ich kann es nicht herausgefunden... ich habe auch nach Lösungen gesucht, hier aber Sie schlagen vor, dass dieser Fehler zeigt, dass ich möchte geben Sie UserInfo ohne user_iduser Wert eingegeben, aber selbst wenn ich dies vor bestehen:

info.setUser(u);

es immer noch nicht funktioniert - ist die bidirektionale Zuordnung noch unterstützt mit cascading? Der gewünschte Effekt ist, dass Benutzer eingefügt werden soll und dann alle UserInfos in der Liste, nachdem es sich der ursprüngliche Benutzer. Wie kann ich das erreichen?

Ich will nicht zu tun,

SET foreign_key_checks = 0/1;

everytime =(

  • Bevor Sie bleiben, haben Sie versucht, die Einstellung einen Verweis auf die UserInfo-Instanz an die Benutzer. Sowas wie info.setUser(u)?
  • Ich habe versucht, nach dem Fehler Teil in meiner Frage =)
InformationsquelleAutor BizzyDizzy | 2015-04-08
Schreibe einen Kommentar