pessoal gostaria de ajuda para saber se estes mapeamentos estão corretos:
classe Usuario:
@Entity
@Table(name = "usuario")
@SequenceGenerator(name = "usuario_seq", sequenceName = "usuario_seq")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "tipousuario", discriminatorType = DiscriminatorType.INTEGER)
@DiscriminatorValue("0")
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "usuario_seq", strategy = GenerationType.SEQUENCE)
@Column(name = "codigousuario")
private int codigo;
@Column(name = "nome")
private String nome;
@Column(name = "cpf")
private String cpf;
@Column(name = "rg")
private String rg;
@Column(name = "orgao")
private String orgao;
@Column(name = "foneresidencial")
private String foneResidencial;
@Column(name = "fonecelular")
private String foneCelular;
@Column(name = "email")
private String email;
@Column(name = "usuario")
private String usuario;
@Column(name = "senha")
private String senha;
@OneToOne(mappedBy = "usuario")
private Endereco endereco;
classe Usuário administrador:
@Entity
@DiscriminatorValue("1")
public class UsuarioAdministrador extends Usuario {
private static final long serialVersionUID = 1L;
public UsuarioAdministrador() {
super( );
}
}
classe Usuário colaborador:
@Entity
@DiscriminatorValue ("3")
public class UsuarioColaborador extends Usuario {
private static final long serialVersionUID = 1L;
public UsuarioColaborador() {
super();
}
}
classe Usuário Veterinário:
@Entity
@DiscriminatorValue("4")
public class UsuarioVeterinario extends Usuario {
private static final long serialVersionUID = 1L;
@Column(name = "crmv")
private String crmv;
@OneToMany(mappedBy = "usuario", fetch = FetchType.LAZY)
private Collection<Prontuario> prontuario;
classe Usuário Cliente:
@Entity
@DiscriminatorValue("2")
public class UsuarioCliente extends Usuario {
private static final long serialVersionUID = 1L;
@OneToMany(mappedBy = "usuario", fetch = FetchType.LAZY)
private Collection<Animal> animal;
classe Endereço:
@Entity
@Table(name = "endereco")
@SequenceGenerator(name = "endereco_seq", sequenceName = "endereco_seq")
public class Endereco implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "endereco_seq",strategy = GenerationType.SEQUENCE)
@Column(name = "codigoendereco")
private int codigoEndereco;
@Column(name = "rua")
private String Rua;
@Column(name = "cep")
private String cep;
@Column(name = "bairro")
private String bairro;
@Column(name = "cidade")
private String cidade;
@Column(name = "uf")
private String uf;
@Column(name = "numero")
private String numero;
@OneToOne
@PrimaryKeyJoinColumn(name = "codigousuario")
private Usuario usuario;
classe Agendamento:
@Entity
@Table (name = "agendamento")
@SequenceGenerator(name = "agendamento_seq", sequenceName = "agendamento_seq")
public class Agendamento implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "agendamento.seq", strategy = GenerationType.SEQUENCE)
@Column(name = "codigoagendamento")
private int codigoAgendamento;
@Column(name = "dataagendamento")
private Date dataAgendamento;
@Column(name = "horaagendamento")
private Date horaAgendamento;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "codigoservico")
private Servico servico;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "codigoanimal")
private Animal animal;
classe Serviço:
@Entity
@Table(name = "servico")
@SequenceGenerator(name = "servico_seq", sequenceName = "servico_seq")
public class Servico implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "servico_seq",strategy = GenerationType.SEQUENCE)
@Column(name = "codigoservico")
private int codigoServico;
@Column(name = "descricaoservico")
private String descricaoServico;
@Column(name = "valorservico")
private double valorServico;
@OneToMany(mappedBy = "sevico", fetch = FetchType.LAZY)
private Collection<Agendamento> agendamento;
classe Animal:
@Entity
@Table(name = "animal")
@SequenceGenerator(name = "animal_seq", sequenceName = "animal_seq")
public class Animal implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "animal_seq",strategy = GenerationType.SEQUENCE)
@Column(name = "codigoanimal")
private int codigoAnimal;
@Column(name = "nomeanimal")
private String nomeAnimal;
@Column(name = "raca")
private String raca;
@Column(name = "cor")
private String cor;
@Column(name = "dieta")
private String dieta;
@Column(name = "habtat")
private String habtat;
@Column(name = "idade")
private int idade;
@Column(name = "pelagem")
private String pelagem;
@Column(name = "olhos")
private String olhos;
@Column(name = "carater")
private String carater;
@Column(name = "porte")
private String porte;
@Column(name = "especie")
private String especie;
@Column(name = "pedegree")
private String pedegree;
@Column(name = "sexo")
private String sexo;
@Column(name = "peso")
private String peso;
@Column(name = "obsclinicas")
private String obsClinicas;
@Column(name = "alergiasafins")
private String alergiasAfins;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "codigousuario")
private UsuarioCliente usuariocliente;
@OneToMany(mappedBy = "animal", fetch = FetchType.LAZY)
private Collection<Prontuario> prontuario;
@OneToMany(mappedBy = "animal", fetch = FetchType.LAZY)
private Collection<Agendamento> agendamento;
Classe Prontuário:
@Entity
@Table (name = "prontuario")
@SequenceGenerator(name = "prontuario_seq", sequenceName = "prontuario_seq")
public class Prontuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "prontuario_seq",strategy = GenerationType.SEQUENCE)
@Column(name = "codigoprontuario")
private int codigo;
@Column(name = "dataprontuario")
private Date dataProntuario;
@Column(name = "horaprontuario")
private Date horaProntuario;
@Column(name = "sintomasapresentados")
private String sintomasApresentados;
@Column(name = "procedimentosrealizados")
private String procedimentosRealizados;
@Column(name = "medicamentosreceitados")
private String medicamentosReceitados;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "codigoanimal")
private Animal animal;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "codigousuario")
private UsuarioVeterinario veterinario;
public class ConexaoHibernateFilter implements Filter {
private SessionFactory sf;
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain chain)
throws ServletException {
try {
this.sf.getCurrentSession().beginTransaction();
chain.doFilter(servletRequest, servletResponse);
this.sf.getCurrentSession().getTransaction().commit();
this.sf.getCurrentSession().close();
} catch (Throwable ex) {
try {
if (this.sf.getCurrentSession().getTransaction().isActive()) {
this.sf.getCurrentSession().getTransaction().rollback();
}
} catch (Throwable t) {
t.printStackTrace();
}
throw new ServletException(ex);
}
}
@Override
public void init(FilterConfig arg0) throws ServletException {
this.sf = HibernateUtil.getSessionFactory();
}
}
classe UbernateUtil:
public class HibernateUtil {
private static final SessionFactory sessionFactory = builSessionFactory();
private static SessionFactory builSessionFactory() {
try {
Configuration cfg = new Configuration();
cfg.configure("hibernate.cfg.xml");
return cfg.buildSessionFactory();
} catch (Throwable e) {
System.out
.println("Criacao inicial da SessionFactory falhou. Erro: "
+ e);
throw new ExceptionInInitializerError(e);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
hibernate.cfg.xml
?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="">
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.password">11011983</property>
<property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/clivet</property>
<property name="hibernate.connection.username">postegres</property>
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="hibernate.current_session_context_class">org.hibernate.context.ThreadLocalSessionContext</property>
<mapping class="cliVet.basicas.Animal"/>
<mapping class="cliVet.basicas.Agendamento"/>
<mapping class="cliVet.basicas.Endereco"/>
<mapping class="cliVet.basicas.Prontuario"/>
<mapping class="cliVet.basicas.Servico"/>
<mapping class="cliVet.basicas.Usuario"/>
<mapping class="cliVet.basicas.UsuarioAdministrador"/>
<mapping class="cliVet.basicas.UsuarioCliente"/>
<mapping class="cliVet.basicas.UsuarioColaborador"/>
<mapping class="cliVet.basicas.UsuarioVeterinario"/>
</session-factory>
</hibernate-configuration>
tem alguma coisa errada. desde já agradeço: