| From | Sent On | Attachments |
|---|---|---|
| Alberto Ivo | Apr 13, 2012 10:04 am | |
| Marcel Maurício | Apr 13, 2012 12:14 pm | |
| Alberto Ivo | Apr 15, 2012 6:09 am |
| Subject: | [CEJUG] Herança com JPA | |
|---|---|---|
| From: | Alberto Ivo (albe...@gmail.com) | |
| Date: | Apr 13, 2012 10:04:53 am | |
| List: | net.java.dev.cejug.discussao | |
Olá pessoal.. to tentando fazer uma herança entre 5 classes e estou tendo alguns probleminhas.. Eis meu mapeamento:
UserAccount - Advogado - Cliente -- Cliente Fisico -- Cliente Juridico
@Entity @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn(name = "tipoUsuario", discriminatorType = DiscriminatorType.STRING, length = 1) @DiscriminatorValue(value = "U") public abstract class UserAccount implements Serializable {
@Id private Integer id;
@Column(length = 1, nullable = false) private String tipoUsuario; }
------------------------------------------------------------------------------------------------
@Entity @DiscriminatorValue("A") public class Advogado extends UserAccount { . . . }
------------------------------------------------------------------------------------------------
@Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "tipoCliente", discriminatorType = DiscriminatorType.CHAR) @DiscriminatorValue(value = "C") public abstract class Cliente extends UserAccount {
@Column(length = 1) private Character tipoCliente; }
------------------------------------------------------------------------------------------------
@Entity @DiscriminatorValue("F") public class ClienteFisico extends Cliente { . . . }
------------------------------------------------------------------------------------------------ @Entity @DiscriminatorValue("J") public class ClienteJuridico extends Cliente { . . . }
------------------------------------------------------------------------------------------------
Ao inserir um Cliente Fisico, por exemplo, eu obrigatoriamentepreciso setar o campo *tipoCliente. *E o campo tipoUsuario (UserAccount) fica como *F*. Só que, o UserAccount deveria ficar C - cliente - o tipoCliente é que deveria ficar F. Outra coisa, ao recuperar o Cliente Fisico, o userAccount vem nulo, eu preciso recuperar, eu preciso fazer um JPQL para que o UserAccount venha? Estou usando EclipseLink.
valeu.
Ivo





