Как сделать первичный ключ из двух полей в спящем режиме?
Как я могу взять получатели дня и часа. Что-то вроде этого - день + "." + Час и сделать его первичным ключом в моей базе данных? Это должно быть String. закрытый строковый ключ = день + "." + час; Какой тип аннотаций нужен? Спасибо!
Я попробовал несколько вещей, но
@Embeddable
public class Task {
@Column(name = "description")
private String description = null;
@Column(name = "day")
private int day = 0;
@Column(name = "hour")
private int hour = 0;
public Task() {
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Integer getDay() {
return day;
}
public void setDay(Integer day) {
this.day = day;
}
public Integer getHour() {
return hour;
}
public void setHour(Integer hour) {
this.hour = hour;
}
@Entity
@Table(name = "Tasks_Details") открытый класс JPAMap {
public JPAMap() {
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@ElementCollection
@JoinTable(name = "Tasks", joinColumns = @JoinColumn(name = "TASK_ID")
)
private Collection<Task> map = new ArrayList<Task>();
public Collection<Task> getMap() {
return map;
}
public void setMap(Collection<Task> map) {
this.map = map;
}
}
1 ответ
Вы должны аннотировать все поля в вашем @Entity
которые составляют первичный ключ с @Id
аннотаций. Вы также можете использовать @Embeddable
с @EmbeddedId
создать класс, являющийся первичным ключом, как это описано здесь (как заметил @nologin, но в ответе упущено самое простое решение с несколькими @Id
).