ich Hibernate lerne und ein wenig mit dem unten Problem steckenversuchen, zu verstehen, wie @JoinTable und @JoinColumn arbeitet
haben zwei Tabellen
CREATE TABLE department (
department_id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
caption varchar(255) DEFAULT NULL) ENGINE=InnoDB;
CREATE TABLE employee (
employee_id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
fio varchar(255) DEFAULT NULL,
fk_department_id int(11) NOT NULL,
FOREIGN KEY (fk_department_id) REFERENCES department (department_id)
) ENGINE=InnoDB ;
und zwei Klassen (in der ersten Klasse auf Kommentar Code sieht aus wie Arbeitslösung)
@Entity
@Table(name = "department")
public class Department {
....
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "employee", joinColumns = {
@JoinColumn(name = "fk_department_id", referencedColumnName = "department_id") })
/*
* @OneToMany(fetch = FetchType.LAZY, mappedBy = "department", cascade =
* CascadeType.ALL)
*/
public Set<Employee> getEmployies() {
return employees;
}
@Entity
@Table(name = "employee")
public class Employee {
......
@ManyToOne
@JoinColumn(name = "fk_department_id")
public Department getDepartment() {
return department;
}
dies führt in
INFO: HHH000423: Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4
Exception in thread "main" org.hibernate.MappingException: Foreign key (FK3cspe1b06hmsik5l8y1i11xmd:employee [employies_employee_id])) must have same number of columns as the referenced primary key (employee [fk_department_id,employies_employee_id])
at org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:148)
at org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:130)
Bitte helfen Sie mir zu verstehen, warum dies nicht
funktioniert
Danke Naros für die Antwort, in meinem Fall habe ich keine mittlere Tabelle, ich habe nur 2 Tabellen –
Es klingt für mich, als ob Sie nicht ein JoinTable dann wollen. Sie könnten die OneToMany und ManyToOne ohne eine JoinTable leicht zuordnen, wenn Sie dann möchten. Wird per Post aktualisiert, um das Beziehungsmapping ohne JoinTable einzuschließen. – Naros
Verstehe ich richtig, dass JoinTable mit JoinColumn funktioniert, wenn ich 3 Tabellen habe? –