@rmaragno escreveu:
Seguinte,
Tenho uma SuperClasse chamada Base, com seus atributos, por exemplo:
@Inheritance(strategy = InheritanceType.JOINED) public class Base implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private Integer excluido; private String descricao; private String metodo; private Integer tempo; }
e duas SubClasses:
@Entity @PrimaryKeyJoinColumn(name="idBase") public class Base1 extends Base implements Serializable { /** * */ private static final long serialVersionUID = 1L; private Date data; } @Entity @PrimaryKeyJoinColumn(name="idBase") public class Base2 extends Base implements Serializable { /** * */ private static final long serialVersionUID = 1L; private String link; }
O mapeamento esta ok, criou tudo no banco de dados.
Agora estou diante da seguinte situação, preciso criar uma Base, mas ainda não sei se ela é do tipo Base1 ou do tipo Base2, tava pensando em disponibilizar para o usuário, a possibilidade dele escolher se quer criar Baser1 / Base2, mas para referenciar isso em minha página ou dialog, que fiquei perdido.
Se Tenho em meu Bean:
private Base base; private Base1 base1; private Base2 base2;
E como eu chamaria na minha página?
Se quero colocar a descricao, posso por #{meuBean.base.descricao}, assim como #{meuBean.base1.descricao} e #{meuBean.base2.descricao} que obviamente vai funcionar, mas se eu precisar colocar os atributos específicos da subclasse, eu teria que chamar ou base1 ou base2 certo? e ai, teria que replicar tudo na minha página e ter 2 códigos específicos caso seja Base1 ou base2 ?exemplo:
#{meuBean.base1.descricao} rendered caso o usuário tenha selecionado o tipo Base1
#{meuBean.base1.data} rendered caso o usuário tenha selecionado o tipo Base1 e#{meuBean.base2.descricao} rendered caso o usuário tenha selecionado o tipo Base2 e
#{meuBean.base2.link} rendered caso o usuário tenha selecionado o tipo Base2Como podem ver estou meio perdido… to achando muita burrice repetir todo o código para cada situação.
Ademais, eu poderia deixar todos os atributos de base e só os especificos em base1 e/ou base2, mas dai na hora que fosse pro meu Bean /Controller, eu teria que fazer:
base1.setDescricao (base.getDescricao()) base1.setExcluido.....
Mensagens: 1
Participantes: 1