Правильный способ обработки списка из нескольких почти идентичных классов - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть объекты 3 разных классов, которые будут обрабатываться одним компонентом. Эти объекты соответствуют 3 различным таблицам в БД. Все 3 дочерних класса имеют большинство своих полей и имеют одно свойство, уникальное для каждого из них. Бин предназначен для извлечения и отображения таблицы всех существующих записей всех 3 классов. Я создал родительский класс, потому что подумал, что это поможет упростить часть, в которой компонент обрабатывает таблицу всех записей в представлении

//The parent class doesn't actually exist in the DB
public class Report{
       //fields shared by all 3 subclasses
       //Do I put @Column here?
       private long id;
       protected String sharedField1, sharedField2, sharedField3;
}

@Entity
@Table(name="report_type_a")
public class ReportA extends Report{
    //only this field is unique to this particular child class
    private String reportAField;
}

@Entity
@Table(name="report_type_b")
public class ReportB extends Report{
    //only this field is unique to this particular child class
    private String reportBField;
}

@Entity
@Table(name="report_type_c")
public class ReportC extends Report{
    //only this field is unique to this particular child class
    private String reportCField;
}

public class ReportBean{
    //a list containing objects of all 3 types to be displayed to the user later
    private ArrayList<Report> reportList;
}

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

1 Ответ

0 голосов
/ 05 сентября 2018

Вам просто нужно это, все в суперклассе не будет частью его собственного стола.

@MappedSuperclass
public class Report{
       //shared fields
       private long id;
       //Do I put @Column here?
       protected String sharedField1, sharedField2, sharedField3;
}

см. https://docs.oracle.com/javaee/5/api/javax/persistence/MappedSuperclass.html

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