ターゲット : 休止状態のマッピングを理解しようとしています。マッピングテーブルを試すと、次のようなエラーが発生しました
外部キー (FK300D262149997B:four [three_id])) には、参照される主キー (3 [one_id,two_id]) と同じ数の列が必要です。
休止状態のマッピング:
1). Created table 'one' with two columns (primary key and name field).
2). Created table 'two' with two columns (primary key and name field).
3). Created table 'three' with three columns (primary key, foreign key reference of table 'one' and foreign key reference of table 'two').
4). Created table 'four' with three columns (primary key, foreign key reference of table 'three' and name field).
5). Entity class 'One' has the set of 'Two' class.
問題 :
When mapping is compiled am getting following error.
Foreign key (FK300D262149997B:four [three_id])) must have same number of columns as the referenced primary key (three [one_id,two_id])
添付ソース:
DDL :
CREATE TABLE ONE(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(45));
CREATE TABLE two(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(45));
CREATE TABLE three(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
one_id BIGINT,
two_id BIGINT,
KEY `one_id` (`one_id`),
KEY `two_id` (`two_id`),
CONSTRAINT `fk_one_three` FOREIGN KEY (`one_id`) REFERENCES `one` (`id`),
CONSTRAINT `fk_two_three` FOREIGN KEY (`two_id`) REFERENCES `two` (`id`) );
CREATE TABLE four(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
three_id BIGINT,
NAME VARCHAR(45),
KEY `three_id` (`three_id`),
CONSTRAINT `fk_three_four` FOREIGN KEY (`three_id`) REFERENCES `three` (`id`));
実在物 :
One.java
public class One {
private long id;
private String name;
private Set<Two> twos;
public Set<Two> getTwos() {
return twos;
}
public void setTwos(Set<Two> twos) {
this.twos = twos;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
二.java
public class Two {
private long id;
private String name;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Three.java
public class Three {
private long id;
private One one;
private Two two;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public One getOne() {
return one;
}
public void setOne(One one) {
this.one = one;
}
public Two getTwo() {
return two;
}
public void setTwo(Two two) {
this.two = two;
}
}
Four.java
public class Four {
private long id;
private Three three;
private String name;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public Three getThree() {
return three;
}
public void setThree(Three three) {
this.three = three;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
どうすればこれを機能させることができますか?