Hibernate Inheritance and Polymorphism - Cascade actual Object, not the ParentClass

So I have an Entity B2, which has a list of Entities B with a OneToMany Relationship. At runtime, instances of the Entitiy B2 class either hold a List of Entities B1 or B2, where B1 and B2 are extending Entity B and have different Attributes. If I persist Entity B2, everything is cascaded, but the Entities B1 and B2 are persisted as B Entities and lose their properties, how can I prevent this and instead persist the actual objects, not just their parent representation?

Consider the following example:

Entity B:

public class B {
//IDs, getters, setters and other irrelevant attributes

  private parentB2;

Entity B1:

public class B1 extends B {
//getters, setters and other irrelevant attributes

  // I don't want to lose this!
  private Something specialAttribute;

Entity B2:

private class B2 extends B {
//getters, setters and other irrelevant attributes

  //This could be B1 or B2
  @OneToMany(fetch = FetchType.EAGER,
        cascade = {CascadeType.ALL})
  List<B> childs;

Now I would add create an instance of B2, add two instances of B2 as childs to the first B2 and for the two childs I would give each 3 instances of B1 with special attributes. I want to be able to persist the parent and therefore the first B2 which has no parents itself, persist it and when I fetch it from my repository, I want that 6 instances of B1 still have their specialAttribute which they had when they were persisted. I really don't want one seperate list for B1 and B2 in the B2 class and implementing something like B2_Node and B2_Leaf would lead to the same problem where a B2_Node could have either B2_Nodes as childs or B2_Leaves and B2 Leaves would have a property which is seperate from B2_Nodes (the list of B1 Entities) which would therefore get lost again.