I have the following context:
CREATE TABLE PROBLEMS (
NAME VARCHAR PRIMARY KEY,
AVG_COST DOUBLE PRECISION
);
CREATE TABLE LOCATIONS (
ID VARCHAR NOT NULL,
PROBLEM_NAME VARCHAR NOT NULL REFERENCES PROBLEMS(NAME),
PRIMARY KEY (ID, PROBLEM_NAME)
);
CREATE TABLE MOVEMENTS (
START_LOC_ID VARCHAR,
END_LOC_ID VARCHAR,
PROBLEM_NAME VARCHAR,
FOREIGN KEY (START_LOC_ID, PROBLEM_NAME ) REFERENCES LOCATIONS(ID, PROBLEM_NAME),
FOREIGN KEY (END_LOC_ID, PROBLEM_NAME) REFERENCES LOCATIONS(ID, PROBLEM_NAME),
PRIMARY KEY (START_LOC_ID, END_LOC_ID, PROBLEM_NAME)
);
How should the movement entity look such that the entity is mapped to the above "MOVEMENTS" table using JPA.
I tried the following, but the foreign key for the Locations are not created.
@Entity
@Table(name="movements")
public class Movement {
@Id
@ManyToOne(fetch = FetchType.LAZY)
private Problem problem;
@Id
@ManyToOne
@JoinColumn(name = "start_location_id", referencedColumnName = "id")
private Location startLocation;
@Id
@ManyToOne
@JoinColumn(name = "end_location_id", referencedColumnName = "id")
private Location endLocation;
private int duration;
//...
}