@kaue escreveu:
Bom Dia,
Estou com o seguinte problema ao usar o InheritanceType.JOINED,
Possuo classe Pessoa/Cliente/Fornecedor.
O Pessoa é minha classe PAI, e cliente/fornecer herdam PESSOA.
Ao efetuar dessa forma o jpa me gerou as tabelas : PESSOA/CLIENTE E FORNECEDOR, cliente e fornecedor tendo o mesmo ID de pessoa, porém em pessoa é criado um campo DTYPE (descriminatortype) onde indica se aquela "PESSOA" é fornecedor ou cliente.
Onde chega meu problema, vai existir casos que a mesma "PESSOA" poderá ser tanto "CLIENTE" como "FORNECEDOR" logo precisariam possuir o mesmo ID de pessoa nas duas tabelas, porém quando tento fazer esse processo, de fazer um novo "FORNECEDOR" por exemplo ser igual a uma "PESSOA" que já é cliente, não me permite. Dizendo que é impossível efetuar o (cast) de Cliente para Fornecedor.Existe alguma possibilidade usando InheritanceType.JOINED de duas tabelas "filhas" usarem o mesmo código "Pai"?
Possuo as seguintes classes :
@XmlRootElement @Entity @Inheritance(strategy=InheritanceType.JOINED) @Table(name="Pessoa") public abstract class Pessoa implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="id") private Long id; @Column(name = "descricao", length=100, nullable = false) private String descricao; } @Entity @XmlRootElement @PrimaryKeyJoinColumn(name="id", referencedColumnName = "id") @Table(name="Cliente") public class Cliente extends Pessoa implements Serializable { @Basic() @Column(name = "limiteCompra", nullable = true) private Double limiteCompra; } @Entity @XmlRootElement @PrimaryKeyJoinColumn(name="id", referencedColumnName = "id") @Table(name="Fornecedor") public class Fornecedor extends Pessoa implements Serializable { @Basic @Temporal(javax.persistence.TemporalType.DATE) @Column(name = "ultimaCompra", nullable = true) private Date ultimaCompra; }
Obrigado.
Mensagens: 1
Participantes: 1