Duvidas co o hibernate

2 respostas
iltonk

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;
classe Hibernate Filter:
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:

2 Respostas

R

Pode ser besteira mais nunca usei SequenceGenerator em cima do nome da classe, eu sempre coloco em cima do primary key

@SequenceGenerator(name = “usuario_seq”, sequenceName = “usuario_seq”)

Nunca usei esses aqui em baixo.
@DiscriminatorColumn(name = “tipousuario”, discriminatorType = DiscriminatorType.INTEGER)
@DiscriminatorValue(“0”)

R

Outra coisa, eu trabalho com hibernate annotations tb, mas nao preciso de nada do hibernate.cfg.xml pra isso, so pra montar a conexao.

Criado 17 de novembro de 2012
Ultima resposta 17 de nov. de 2012
Respostas 2
Participantes 2