Как отобразить унаследованные классы в таблице базы данных с помощью Hibernate? - PullRequest
0 голосов
/ 03 мая 2019

Я работаю над приложением для управления студентами, меня смущает то, как сопоставлять разные типы пользователей, которые есть в моей базе данных, с классами на Java с использованием наследования.У меня есть таблицы "Пользователь", "Ученик" и "Учитель" следующим образом:

enter image description here

Я создал абстрактный класс Пользователь:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Table(name = "user")
public abstract class User {

@Id
private int id;
private String fname;
private String lname;
private String email;
private String password;
private String address;
private String phone;
private String userType;
private boolean isAdmin;


public User(String fname, String lname, String email, String password, String address, String phone,
        String userType, boolean isAdmin) {
    //super();

    this.fname = fname;
    this.lname = lname;
    this.email = email;
    this.password = password;
    this.address = address;
    this.phone = phone;
    this.userType = userType;
    this.isAdmin = isAdmin;
}   

Дочерний класс Ученик:

@Entity
@Table(name = "student")
public class Student extends User  {

@Id
@Column(name = "user_id")
private int id;
private int grade;

public Student(int id, String fname, String lname, String email, String password, String address, String phone,
        String userType, int grade, boolean isAdmin) 
{
    super(fname, lname, email, password, address, phone, userType, isAdmin);

    this.grade=grade;
    this.id = id;
}

Класс «Учитель» аналогичен «Ученику».

Я застрял на том, как на самом деле моделироватьотношения, использующие спящий режим для создания, чтения, обновления или удаления студентов из базы данных.

До сих пор я пробовал этот метод в классе StudentDAO, но он не работает, и я действительно не уверен, если мойс моделированием все в порядке:

@Transactional  
   public void listStudent( int id ){

    Student myStudent =null;

    Configuration con = new Configuration().configure("hibernate.cfg.xml").addAnnotatedClass(Student.class);

     SessionFactory sf = con.buildSessionFactory();

     Session session = sf.openSession();

     Transaction tx = session.beginTransaction();

     myStudent = (Student)session.get(Student.class, id);

     System.out.println(myStudent);

Я запутался в том, как использовать отношения «один ко многим», так как считаю это наследством.

Как мне смоделировать это наилучшим образом и как я могу использовать hibernate, чтобы просто использовать эти основные операции с базой данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...