У меня есть три таблицы, в которых одна таблица использует внешний ключ двух других таблиц для создания составного первичного ключа. Теперь я использую @Embeddable, но так как оба ключа являются внешним ключом, Как я сейчас создам составной первичный ключ в Entity.
CREATE TABLE table1
(table1id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (table1id));
table2
CREATE TABLE table2
(table2id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (table2id));
table3
CREATE TABLE table3 (
table1id INT NOT NULL,
table2id INT NOT NULL,
PRIMARY KEY (table1id, table2id),
FOREIGN KEY (table1id) REFERENCES table1 (table1id),
FOREIGN KEY (table2id) REFERENCES table2 (table2id)
);
Как преобразовать эту таблицу в Hibenate Entity.
@Entity
@Table(name="table3")
class Table1 {
@Id
long table1id;
//getter and setter
}
@Entity
@Table(name="table3")
class Table2 {
@Id
long table2id;
//getter and Setter
}
@Entity
@Table(name="table3")
class Table3 {
@EmbeddedId
private table3PK table3PKId;
//getter and Setter
}
@Embeddable
Class table3PK{
@ManyToOne
@JoinColumn(name="table1Id" ,referencedColumnName="table1id")
Table1 table1;
@ManyToOne
@JoinColumn(name="table2Id" ,referencedColumnName="table2id")
Table2 table2;
public table3PK(){
}
public table3PK(Table1 table1 ,Table2 table2){
this.table1;
this.table2;
}
}
}