There are entities Audience , Teacher , Group and Lecture . Lecture Entity contains one Audience , one Teacher and a multitude of Group . It is impossible with the help of annotations to configure the mapping, I shoveled a bunch of resources. What's wrong?

Essence Lecture :

 @Entity @Table(name = "lectures") public class Lecture implements Serializable { private static final long serialVersionUID = -3427911934140231015L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "lecture_id") private Integer lectureID; @Column(name = "lecture_name", nullable = false, length = 20) private String lectureName; @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @PrimaryKeyJoinColumn private Audience audience; @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @PrimaryKeyJoinColumn private Teacher teacher; @OneToMany(fetch = FetchType.LAZY, mappedBy = "lecture", cascade = CascadeType.ALL) private List<Group> groups; @Temporal(TemporalType.DATE) @Column(name = "date", nullable = false, length = 7) private Calendar date; 

Essence Audience :

 @Entity @Table(name = "audiences") public class Audience implements Serializable { private static final long serialVersionUID = -3557084992704136716L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "audience_id", unique = true, nullable = false) private Integer audienceID; @Column(name = "room_number", nullable = false) private Integer roomNumber; 

Teacher Entity:

 @Entity @Table(name = "teachers") public class Teacher implements Serializable { private static final long serialVersionUID = -86518201656746014L; @Id @GeneratedValue (strategy = GenerationType.AUTO) @Column(name = "teacher_id", unique = true, nullable = false) private Integer teacherID; @Column(name = "first_name", nullable = false, length = 20) private String firstName; @Column(name = "last_name", nullable = false, length = 20) private String lastName; 

Entity Group :

 @Entity @Table(name = "groups") public class Group implements Serializable { private static final long serialVersionUID = 2022725469824583686L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "group_id", unique = true, nullable = false) private Integer groupID; @Column(name = "group_name", nullable = false, length = 10) private String groupName; @ManyToOne(fetch = FetchType.LAZY) private Lecture lecture; @OneToMany(targetEntity=Student.class, fetch = FetchType.LAZY, mappedBy = "group", cascade = CascadeType.ALL) private List<Student> students; 

It turned out to adjust one to one Teacher , Audience and Lecture

 @Entity @Table(name = "teachers") public class Teacher implements Serializable { private static final long serialVersionUID = -86518201656746014L; @Id @GeneratedValue (strategy = GenerationType.AUTO) @Column(name = "teacher_id", unique = true, nullable = false) private Integer teacherID; @Column(name = "first_name", nullable = false, length = 20) private String firstName; @Column(name = "last_name", nullable = false, length = 20) private String lastName; @OneToOne(fetch = FetchType.LAZY, mappedBy = "teacher", cascade = CascadeType.ALL) private Lecture lecture; @Entity @Table(name = "audiences") public class Audience implements Serializable { private static final long serialVersionUID = -3557084992704136716L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "audience_id", unique = true, nullable = false) private Integer audienceID; @Column(name = "room_number", nullable = false) private Integer roomNumber; @OneToOne(fetch = FetchType.LAZY, mappedBy = "audience", cascade = CascadeType.ALL) private Lecture lecture; @Entity @Table(name = "lectures") public class Lecture implements Serializable { private static final long serialVersionUID = -3427911934140231015L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "lecture_id") private Integer lectureID; @Column(name = "lecture_name", nullable = false, length = 20) private String lectureName; @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name="audience_id") private Audience audience; @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name="teacher_id") private Teacher teacher; 
  • I would advise to move away from the ΠΎΠ΄ΠΈΠ½-ΠΊ-ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ ΠΎΠ΄ΠΈΠ½-ΠΊΠΎ-ΠΌΠ½ΠΎΠ³ΠΈΠΌ principle in both classes. All because when you ship in a class Lecture group, in each Group there is a Lecture field with the same groups. it will be infinite. Do either Lecture have groups, or Group have Lecture . - Tsyklop
  • and what exactly does not work? Where is the essence of Student ? - Tsyklop
  • with getAll from the database in lecture there are no fields groups, teacher, audience - lutsik
  • Student entity does not seem to be related to this, so I did not post it - lutsik
  • What exactly does not work? - Tsyklop

0