#hibernate #jpa #spring-data-jpa
Вопрос:
Это мой пример родительского класса структуры сущностей
@IDClass(TicketPK.class)
class Ticket {
@Id
int ticket_id;
@Id
Date month;
}
Дочерняя организация
@IDClass(FooPK.class)
class Foo {
@Id
int id;
@ManyToOne
@JoinColumns({
@JoinColumn(name = "Ticket_ID", referencedColumnName = "Ticket_id"),
@JoinColumn(name = "month", referencedColumnName = "month") })
private Ticket ticket;
}
Первичный ключ для Foo состоит из «идентификатора» и «месяца». Как мне указать «месяц» также в качестве составного ключа в моей сущности Foo. Также, каким будет мой класс FooPK?
Ответ №1:
Почему вы не можете просто отобразить атрибут в сущности? Вместо этого я бы использовал встроенные идентификаторы:
@Entity
class Foo {
@EmbeddedId
FooId id;
@ManyToOne
@JoinColumns({
@JoinColumn(name = "Ticket_ID", referencedColumnName = "Ticket_id"),
@JoinColumn(name = "month", referencedColumnName = "month") })
private Ticket ticket;
}
@Embeddable
class FooId {
@Column(nullable = false)
int id;
@Column(nullable = false)
int month;
}