Polimorfismo + Hibernate

E ai galera beleza, eu estava fazendo uma atividade seguindo um diagrama de classe, porém me deparei com um problema na hora de fazer o mapeamento no hibernate:

A dúvida é: Qual a maneira correta de fazer o mapeamento entre a classe Cliente com as classes Reserva e Compra ? Sendo que cliente pode ser Cliente Fisico ou Cliente Juridico?

Ao meu ver a classe Usuário e Cliente utilizariam a anotação @MappedSuperclass

tipo:

@MappedSuperclass
public class Usuario implements Serializable{
...
}
@MappedSuperclass
public class Cliente extends Usuario{
...
}
@Entity
@Table(name="Cliente_Fisico", schema="atividade3")
public class ClienteFisico extends Cliente{
...
}
@Entity
@Table(name="Cliente_Juridico", schema="atividade3")
public class ClienteJuridico extends Cliente{
...
}

se eu fizer assim acredito que vai dar problema na criação das tabelas ou na hora de persistir os dados:

@Entity
@Table(name="Reserva", schema="atividade3")
public class Reserva implements Serializable{

	@ManyToOne(cascade = CascadeType.ALL)
	private Cliente cliente;
}

e a maneira que acho que funcionaria seria assim, porém aparentemente parece que é errado… não sei:

@Entity
@Table(name="Reserva", schema="atividade3")
public class Reserva implements Serializable{
	
	@ManyToOne(cascade = CascadeType.ALL)
	private ClienteFisico clienteFisico;
	
	@ManyToOne(cascade = CascadeType.ALL)
	private ClienteJuridico clienteJuridico;
}

Alguém ja passou por isso? espero que alguém consiga sanar as minhas dúvidas :smiley:

Obrigado desde já :smiley: