I have 3 entities:
@Entity
public abstract class A {
  @Id
  public Long id;
  public String a1;
  public String a2;
  public String a3;
  //much more fields    
  //getters and setters
}
@Entity
public class B extends A {
  public String b1;
  public String b2;
  public String b3;
  //much more fields
  //getters and setters
}
@Entity
public class C extends A {
  public String c;
  //that's it. no more data
  //getters and setters
}
I want to map these classes to 2 tables. First one will contain all of A and C data (i.e. SINGLE_TABLE inheritance). And the second one will contain B's data and a foreign key to A (i.e. JOINED inheritance). 
I tried the solution proposed here, but it doesn't work for me. The attributes of BB1 and BB2 are also included into A.
How to implement such a strategy? Classes A and C are as different as Dog and Cat are, so I can't merge them into one class.  
Also I don't want to use table-per-hierarchy which would result in duplicating lots of A's data.
 
     
    