@d.troiani escreveu:
Bom dia pessoal! Estou querendo criar meu banco totalmente com hibernate, porém estou com problemas de Herança. Meu problema é o seguinte. Tenho a superclasse 'Usuario' e a subclasse 'Paciente'.
Queria saber que anotações devo fazer nas classes, tanto na super quanto na sub, e se possível, como setar o valor da PK da superclasse para algum atributo/coluna da minha subclasse.SUPERCLASSE
@Entity
public class Usuario {// Atributos @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id_usuario") private Long idUsuario; @Column(length = 200, nullable = false) private String nome; @Column(columnDefinition = "char(9)", nullable = false, unique = true) private String rg; @Column(length = 11, nullable = false, unique = true) private String cpf; @Column(columnDefinition = "char(8)", length = 8, nullable = false, unique = true) private String rne; @DateTimeFormat(pattern = "yyyy-MM-dd") @Temporal(TemporalType.DATE) @Column(name = "data_nasc", nullable = false) private Date dataNascimento; @Enumerated(EnumType.STRING) @Column(columnDefinition = "enum ('Masculino','Feminino')", nullable = false) private Genero genero; @Column(length = 255, nullable = false, unique = true) private String email; @Column(length = 32, nullable = false) private String senha; @Enumerated(EnumType.STRING) @Column(columnDefinition = "enum ('Medico','Paciente','Administrador')", nullable = false) private TipoUsuario tipoUsuario; @Column(name = "tel_residencial", columnDefinition = "int(10)") private int telResidencial; @Column(name = "tel_comercial", columnDefinition = "int(10)") private Integer telComercial; @Column(name = "tel_celular", columnDefinition = "bigint(11)") private Integer telCelular; @Column(name = "tel_recados", columnDefinition = "bigint(11)") private int telRecados; @Column(columnDefinition = "int(5)") private Integer ramal; @Column(name = "contato_recado", length = 100) private String contatoRecado; @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) private Endereco cep; // Getters e Setters public Long getIdUsuario() { return idUsuario; } public void setIdUsuario(Long idUsuario) { this.idUsuario = idUsuario; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getRg() { return rg; } public void setRg(String rg) { this.rg = rg; } public String getCpf() { return cpf; } public void setCpf(String cpf) { this.cpf = cpf; } public String getRne() { return rne; } public void setRne(String rne) { this.rne = rne; } public Date getDataNascimento() { return dataNascimento; } public void setDataNascimento(Date dataNascimento) { this.dataNascimento = dataNascimento; } public Genero getGenero() { return genero; } public void setGenero(Genero genero) { this.genero = genero; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getSenha() { return senha; } public void setSenha(String senha) { this.senha = senha; } public TipoUsuario getTipoUsuario() { return tipoUsuario; } public void setTipoUsuario(TipoUsuario tipoUsuario) { this.tipoUsuario = tipoUsuario; } public Integer getTelResidencial() { return telResidencial; } public void setTelResidencial(Integer telResidencial) { this.telResidencial = telResidencial; } public Integer getTelComercial() { return telComercial; } public void setTelComercial(Integer telComercial) { this.telComercial = telComercial; } public Integer getTelCelular() { return telCelular; } public void setTelCelular(Integer telCelular) { this.telCelular = telCelular; } public Integer getTelRecados() { return telRecados; } public void setTelRecados(Integer telRecados) { this.telRecados = telRecados; } public Integer getRamal() { return ramal; } public void setRamal(Integer ramal) { this.ramal = ramal; } public String getContatoRecado() { return contatoRecado; } public void setContatoRecado(String contatoRecado) { this.contatoRecado = contatoRecado; } public Endereco getCep() { return cep; } public void setCep(Endereco cep) { this.cep = cep; }
}
SUBCLASSE
@Entity
public class Paciente extends Usuario {// Atributos @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long idPaciente; @Column(columnDefinition = "tinyint(1)", nullable = false) private Integer convenio; @Column(columnDefinition = "mediumblob") private byte[] foto; // Getters e Setters public Long getIdPaciente() { return idPaciente; } public void setIdPaciente(Long idPaciente) { this.idPaciente = idPaciente; } public Integer getConvenio() { return convenio; } public void setConvenio(Integer convenio) { this.convenio = convenio; } public byte[] getFoto() { return foto; } public void setFoto(byte[] foto) { this.foto = foto; } // Converte os bytes em base 64 String public String getFoto64() { String encodedImage = Base64.encode(foto); return encodedImage; }
}
Só estou passando a entidade e subclasse Paciente para nao ficar grande o texto.
Desde já, agradeço!
Mensagens: 1
Participantes: 1