Как сделать первичный ключ из двух полей в спящем режиме?

Как я могу взять получатели дня и часа. Что-то вроде этого - день + "." + Час и сделать его первичным ключом в моей базе данных? Это должно быть 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).

Другие вопросы по тегам