0

I'm stuck with a problem in Java, hibernate (jpa) So, I have 2 classes: Class and Classroom, each one being entities

@Entity
@Table(name = "CLASSES")
public class Class {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="ID")
    private Long id;

    @Column(name = "TEACHER_ID")
    private Long teacherId;

    @Column(name = "NAME")
    private String name;

    @Column(name = "YEAR")
    private Integer year;

    @Column(name = "SECTION")
    private String section;
}
@Entity
@Table(name = "CLASSROOMS")
public class Classroom {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private Long id;

    @Column(name = "NAME")
    private String name;

    @Column(name = "LOCATION")
    private String location;

    @Column(name = "CAPACITY")
    private Integer capacity;
}

Also, I have another java class called Planner which connect these two classes (their tables - using classroom_id and class_id); I have a table for this Planner

@Entity
@Table(name = "PLANNERS")
public class Planner {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private Long id;
    @Column(name = "CLASSROOM_ID")
    private Long classroomId;

    @Column(name = "CLASS_ID")
    private Long classId;

    @Column(name = "STARTTIME")
    private Time startTime;

    @Column(name = "ENDTIME")
    private Time endTime;

    @Column(name = "DATA")
    private Date date;
}

What I need: a new entity (or just output data) which will include all fields from PLANNERS, field NAME from CLASSES and field NAME from CLASSROOMS.

In SQL, this query is:

select M.classroom_id, M.class_id, M.starttime, M.endtime, M.data, CL.NAME AS "ROOM NAME (FROM CLASSROOMS)", C.NAME AS "COURSE NAME (FROM CLASSES)" FROM PLANNERS M INNER JOIN CLASSROOMS CL ON CL.ID = M.CLASSROOM_ID INNER JOIN CLASSES C ON C.ID = M.CLASS_ID

(inner join using classroom_id and class_id)

How can I do this on hibernate jpa? I want to get the objects (rows) returned by the above query. I searched a lot, I find about join column, other annotations (e.g. OneToMany etc) but I didn't succeed, so I need help

dacian
  • 95
  • 1
  • 8

0 Answers0