H
henie
Gast
Hallo,
ich bin Hibernate-Anfänger, brauche es aber relativ dringend und bin mit einem einfachen Beispiel angefangen.
Ich habe 2 Tabellen, Tisch und Stuhl zwischen denen einen 1:n Beziehung besteht.
Die Tabellen hab ich in MySQL angelegt und versuche nun etwas darin zu speichern, was allerdings
nicht funktioniert und ich weiß nicht warum das so ist.
Ausschnitt aus meiner Klasse Stuhl:
aus Klasse Tisch:
mein Code zum anlegen von einem Tisch und 2 Stühlen
und dann die auftretende Fehlermeldung
Könnt Ihr mir da weiterhelfen?
ich bin Hibernate-Anfänger, brauche es aber relativ dringend und bin mit einem einfachen Beispiel angefangen.
Ich habe 2 Tabellen, Tisch und Stuhl zwischen denen einen 1:n Beziehung besteht.

Die Tabellen hab ich in MySQL angelegt und versuche nun etwas darin zu speichern, was allerdings
nicht funktioniert und ich weiß nicht warum das so ist.
Ausschnitt aus meiner Klasse Stuhl:
Code:
@Entity
@Table(name="stuhl")
public class Stuhl implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@SequenceGenerator(name = "stuhl_gen", sequenceName = "stuhl_id_seq")
private Integer id;
@Column(name="Material")
private String Material;
@ManyToOne
@JoinColumn(name="tisch_id")
private Tisch tisch;
aus Klasse Tisch:
Code:
@Entity
@Table(name="tisch")
public class Tisch implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@SequenceGenerator(name = "tisch_gen", sequenceName = "tisch_id_seq")
private Integer id;
@Column(name="Fuesse")
private Integer Fuesse;
@Column(name="Material")
private String Material;
@OneToMany(mappedBy="tisch")
private Set<Stuhl> stühle = new HashSet<Stuhl>();
mein Code zum anlegen von einem Tisch und 2 Stühlen
Code:
Tisch tisch1=new Tisch();
tisch1.setFuesse(4);
tisch1.setMaterial("Eiche");
ses.save(tisch1);
Stuhl stuhl1=new Stuhl();
stuhl1.setMaterial("Buche");
stuhl1.setTisch(tisch1);
ses.save(stuhl1);
tisch1.getStühle().add(stuhl1);
Stuhl stuhl2=new Stuhl();
stuhl2.setMaterial("Eiche");
stuhl2.setTisch(tisch1);
ses.save(stuhl2);
tisch1.getStühle().add(stuhl2);
tx.commit();
und dann die auftretende Fehlermeldung
Code:
16:52:43,209 WARN JDBCExceptionReporter:100 - SQL Error: 1452, SQLState: 23000
16:52:43,209 ERROR JDBCExceptionReporter:101 - Cannot add or update a child row:
a foreign key constraint fails (`beispiel/stuhl`, CONSTRAINT `tisch_id` FOREIGN KEY (`id`)
REFERENCES `tisch` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)
Exception in thread "main" org.hibernate.exception.ConstraintViolationException:
could not insert: [obj.Stuhl]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94)....
Caused by: com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException:
Cannot add or update a child row: a foreign key constraint fails (`beispiel/stuhl`,
CONSTRAINT `tisch_id` FOREIGN KEY (`id`) REFERENCES `tisch` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931)...
Könnt Ihr mir da weiterhelfen?