У меня есть абстрактный класс, подобный этому:
public abstract class NotificationParent {
@SerializedName(SerCons.C_NOTIFICATION_ID) private int notificationId;
@SerializedName(SerCons.C_ID) private int id;
@SerializedName(SerCons.C_DATE) private long date;
...
}
и два класса, которые наследуются от упомянутого абстрактного класса:
public class NotifNewRingTone extends NotificationParent {
@SerializedName(SerCons.C_GAME_ID) private int rtId;
@SerializedName(SerCons.C_GAME_NAME) private String rtName;
..
}
public class NotifNewWallpaper extends NotificationParent {
@SerializedName(SerCons.C_GAME_ID) private int wpId;
@SerializedName(SerCons.C_GAME_NAME) private String wpName;
...
}
Я хочу сделать 3 таблицы в БД: notifications
, wallpaper_notification
, ringtone_notifications
.
Но когда я хочу выбрать (присоединиться) из таблиц, чтобы получить все уведомления (обои и рингтоны), я не знаю, что мне нужно делать.
Я хочу что-то вроде этого:
@Query("select * from notifications n left join ringtone_notifications r on n.notif_id = r.notif_id left join wallpaper_notifications w on n.notif_id = w.notif_id) public NotificationParent getAllNotifications();
Но это даст мне только те поля, которые содержит класс NotificationParent. Не поля подклассов.
Также я хочу, чтобы запрос был готов к реализации архитектуры PagedList.
Пожалуйста, дайте ваши предложения, даже если я должен изменить дизайн классов.