Hallo an alle!
Ich habe ein grosses Problem, da ich morgen Präsentation habe und das Hinzufügen in der Datenbank nicht funktioniert. Ich nehme Hibernate mit Spring und MySQL Datenbank.
Was ich habe ist eine 1:n Relation (Story:Task), also der Task gehört zu einer Story und deswegen hat der Task die ID der Story als FK. Erst dachte ich mein Frontend macht den Fehler, aber wenn ich mein Testcase erweitere (bitte nicht meckern jetzt, ich weiss die Komponenten sollen getrennt sein, ist nur der Test vom Testfall des Tests
) merke ich, dass es allein auf der Java-Seite liegt:
Was passiert in der Datenbank: die story_id ist "null", aber sie sollte doch 1 sein?!
Story:
Task:
Die ids auf beiden Seiten (Stor yund Task) sind so notiert:
Was ist daran falsch? Hat jemand eine Idee? Wie kann ich das debuggen?
Hier noch das SQL wie es geschrieben wird, wenn ich dumpe:
Das zeigt mir die Konsole an:
Vielen Dank im voraus für eure Hilfe.
Gruss PHANTOMIAS
Ich habe ein grosses Problem, da ich morgen Präsentation habe und das Hinzufügen in der Datenbank nicht funktioniert. Ich nehme Hibernate mit Spring und MySQL Datenbank.
Was ich habe ist eine 1:n Relation (Story:Task), also der Task gehört zu einer Story und deswegen hat der Task die ID der Story als FK. Erst dachte ich mein Frontend macht den Fehler, aber wenn ich mein Testcase erweitere (bitte nicht meckern jetzt, ich weiss die Komponenten sollen getrennt sein, ist nur der Test vom Testfall des Tests
Code:
@Test
public void testAddTask() {
...
Task task = new Task();
task.setDesc("test");
// NEUE ZEILEN -> Story!
Story story = new Story();
story.setId(1);
task.setStory(story);
service.addTask(task);
...
}
Story:
Code:
@OneToMany(fetch=FetchType.EAGER)
@JoinColumn(name="story_id", referencedColumnName="id")
@Fetch(FetchMode.SELECT)
private List<Task> tasks;
Task:
Code:
@ManyToOne
@JoinColumn(name="story_id", referencedColumnName="id", insertable=false, updatable=false)
private Story story;
Die ids auf beiden Seiten (Stor yund Task) sind so notiert:
Code:
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
Was ist daran falsch? Hat jemand eine Idee? Wie kann ich das debuggen?
Hier noch das SQL wie es geschrieben wird, wenn ich dumpe:
Code:
CREATE TABLE `task` (
`id` int(11) NOT NULL AUTO_INCREMENT,
...
`story_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK27A9A5FF83AA22` (`story_id`),
CONSTRAINT `FK27A9A5FF83AA22` FOREIGN KEY (`story_id`) REFERENCES `story` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
Das zeigt mir die Konsole an:
Nicts zu sehen von der story-id...Hibernate: insert into Task (creation, desc, name, seconds) values (?, ?, ?, ?)
Vielen Dank im voraus für eure Hilfe.
Gruss PHANTOMIAS
Zuletzt bearbeitet: