title: Room with Subclass
body: <p>I'm looking to persist some data classes.  I've been investigating using Room for this, which is very straight forward to do if it's just a case of a stand alone data class.  However the objects I am trying to persist are sub classes, which adds a layer of complexity.</p>
  
  <p><strong>THIS CODE HAS NOT BEEN COMPILED, WRITTEN IN SO FOR ILLUSTRATION PURPOSES ONLY</strong></p>
  
  <p>So with a simple straight forward class </p>
  
  <pre><code>    @Entity(tableName = TABLE_NAME)
     public class Event implements MyEvent {
     public static final String TABLE_NAME = "events";
     public static final String DATE_FIELD = "date";
  
     @PrimaryKey(autoGenerate = true)
     private int id;
     private String name;
     private String description;
     @ColumnInfo(name = DATE_FIELD)
     private LocalDateTime date;
  
     public Event(int id, String name, String description, LocalDateTime date) {
         this.id = id;
         this.name = name;
         this.description = description;
         this.date = date;
     }
  
     @Override
     public int getId() {
         return id;
     }
  
     @Override
     public String getName() {
         return name;
     }
  
     @Override
     public String getDescription() {
         return description;
     }
  
     @Override
     public LocalDateTime getDate() {
         return date;
     }
  
     @Override
     public String toString() {
         return "Event{" +
                 "id=" + id +
                 ", name='" + name + '\'' +
                 ", description='" + description + '\'' +
                 ", date=" + date +
                 '}';
     }
  
     public long getDaysUntil() {
         return ChronoUnit.DAYS.between(LocalDateTime.now(), getDate());
     }
  }
  </code></pre>
  
  <p>That's straight forward but if you have for example </p>
  
  <pre><code>  public class MusicEvent extends Event implements MyEvents {
  
    private String musicType;
    private boolean supportActs;
  
     @Override
     public int getId() {
        return id;
     }
  
     @Override
     public String getName() {
         return name;
     }
  
     @Override
     public String getDescription() {
         return description;
     }
  
     @Override
     public LocalDateTime getDate() {
         return date;
     }
  
    public void setMusicType(String musicType) {
        this.musicType = musicType;
    }
  
    public String getMusicType() {
        return this.musicType;
    }
  
    public void setSupportActs(boolean supportActs) {
        this.supportActs = supportActs;
    }
  
      public boolean getSupportActs() {
        return this.supportActs;
    }
    }
  
    public interface MyEvents {
       int getId();
       String getName();
       String getDescription();
       LocalDate getDate();
    }
  </code></pre>
  
  <p>So what I want to do is have one table of events, I don't want to have multiple tables for e.g. music events, film events, drama events.</p>
  
  <p>Or if they all implement MyEvents they can all be type MyEvents.</p>
  
  <p>I would like to be able to persist all Event objects and when required retrieve all event objects.</p>
  
  <p>If anyone could share some info on this I'd greatly appreciate it.</p>