MySQL Hibernate -> Setzt Fremdschlüssel nicht

PHANTOMIAS

Aktives Mitglied
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:

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);
...
	}
Was passiert in der Datenbank: die story_id ist "null", aber sie sollte doch 1 sein?!

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:
Hibernate: insert into Task (creation, desc, name, seconds) values (?, ?, ?, ?)
Nicts zu sehen von der story-id...

Vielen Dank im voraus für eure Hilfe.

Gruss PHANTOMIAS
 
Zuletzt bearbeitet:
> insertable=false

insertable : (Optional) Whether the column is included in SQL INSERT statements generated by the persistence provider.

mag das nich Auswirkungen haben?

ich würde im Zweifel den task auch manuell in die Liste der Tasks des Story-Objektes einfügen,
und evtl. hilft es, vorher schon die Objekte zu saven/ persistieren,

was du aber auf beiden Seiten konfiguieren musst, gerade mit Annotations statt Mapping.xml,
kann ich nicht sagen
 
Ich habe es soeben auch gefunden, man sollte halt nicht kopieren ohne es verstanden zu haben.
Das war es... Mein Gott, mir fällt ein Steim vom Herzen!!!

Vielen Dank für die Hilfe, ich hoffe ich komme jetzt "durch", dass ich fertig werde und nicht noch so Probleme auftauchen.

Gruss PHANTOMIAS
 

Neue Themen


Zurück
Oben