как следует из заголовка, у меня есть составной первичный ключ, который должен ссылаться на два объекта, чтобы позже иметь доступ к ним в JSF.
Класс должен выглядеть так...:
@Entity
public class Timetable {
public static final String findAll = "Timetable.findAll";
@Id
@ManyToOne
@JoinColumn(name = "lectureId")
private Lecture lecture;
@Id
@ManyToOne
@JoinColumn(name = "timeslotId")
private Timeslot timeslot;
... поэтому я могу позже получить доступ к этим объектам в JSF следующим образом:
#{timetable.timeslot.timeslotId}
Однако теперь Glassfish предупреждает о несоответствии типов, поскольку lection и timeslot являются объектами, но ссылаются на первичный ключ типа Long.
Есть ли простой трюк, чтобы исправить это?
Для получения дополнительной информации я просмотрел следующие источники: http://docs.oracle.com/cd/E16439_01/doc.1013/e13981/cmp30cfg001.htm#BCGIGBEI
Заранее спасибо =)
@Embeddable
и@IdClass
соответственно, которые можно использовать для формирования составного первичного ключа. Эти составные/сложные объектыLecture
иTimeslot
кажутся сущностями, образующими отношения@ManyToOne
сTimetable
. Как тогда они могут быть частью составного первичного ключа в вашей СУБД? Однако вы можете иметь отдельное/обычное поле первичного ключа (не составное) в таблице базы данных, сохраняя оба этих отношения такими, какие они есть. - person Tiny   schedule 12.06.2015