@Inheritance(strategy=InheritanceType.JOINED)

Eaeee… estou com o seguinte problema!
to fazendo um sistema (didático, na verdade meu TCC) e preciso mapear minhas heranças através da InheritanceType.JOINED, pois quero que cada classe minha seja uma tabela no banco. Estou utilizando annotation pra mapear.

A herança é a Seguinte : PESSOA
/
FISICA JURIDICA
|
USUARIO
/
Advogado Funcionario.

E toda FISICA tem uma LIGAÇAO many-yo-one one-to-many com juridica.

A herança TEM que ser assim. nao me pergunte o porque. ordens do orientador ;/.

Já fiz o seguinte:

@Entity
@Table(name = “PESSOA”)
@Inheritance(strategy=InheritanceType.JOINED)

public class Pessoa implements Serializable {

@Entity
@Table (name = “FISICA”)
@PrimaryKeyJoinColumn (name = “FISICA_ID”)

public class Fisica extends Pessoa implements Serializable {

E o mesmo vai se repetindo a todas as outras classes
Quando executo para gerar o banco vem o seguinte erro:
Exception in thread “main” org.hibernate.AnnotationException: Foreign key circularity dependency involving the following tables: USUARIO, FISICA, ADVOGADO
at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:470)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:304)

como resolvo isso ???
preciso mapear as classes sempre para que uma SubClasse tenha um FK apontando o ID da Mae. No caso FISICA teria o ID_FISICA e ID_PESSOA_FK.
É possivel isso com o Hibernate, pois pelo que vi ele é totalmente Orientado á Objeto e eu estou querendo uma estrutura de banco relacional ?
Qual a melhor forma ou mais proximo disso que consigo chegar ?

Agradeço a atençao!!