Olá, pessoal
Estou com sérias dificuldades para mapear minhas classes de persistencia, mesmo consultando a documentação do hibernate anotation e fazendo consultas no guj não conseguí resolver meu problema. Segue meu codigo que estou utilizando, gostaria da sua opinião para resolver meu prolblama.
colaborador N*-----------------------> 1 Setor
Como faço para mapear essas classes
--------------------------------MAPEAMENTO DO COLABORADOR---------------------------
package src.portaria.vo;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
@Entity
@Table(name = "colaborador")
public class Colaborador implements Serializable{
public Colaborador(){
}
@Id //define a chave da classe a ser mapeada
private Long Col_codigo;
private String Col_Set_codigo;
private String Col_nome;
private String Col_funcao;
private String Col_fone;
@OneToMany(mappedBy="Colaborador")
@MapKey(name="Col_Set_codigo")
private List <Setor> setor;//Estou utilizando esse tipo de liste mas não sei seu real sentido
//vc pode me explicar eu poderia utilizar simplismente o seguinte:
//private Setor setor; [b]qual é a diferença dissso para isso[/b] private List <Setor> setor;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="Col_Set_codigo",insertable=false, updatable=false, nullable = true)
@Fetch(FetchMode.JOIN)
private Colaborador colaborador;
// public List<Setor> getSetor() {
// return setor;
// }
// public void setSetor(List<Setor> setor) {
// this.setor = setor;
// }
//
public Long getCol_codigo() {
return Col_codigo;
}
public void setCol_codigo(Long col_codigo) {
Col_codigo = col_codigo;
}
public String getCol_fone() {
return Col_fone;
}
public void setCol_fone(String col_fone) {
Col_fone = col_fone;
}
public String getCol_funcao() {
return Col_funcao;
}
public void setCol_funcao(String col_funcao) {
Col_funcao = col_funcao;
}
public String getCol_nome() {
return Col_nome;
}
public void setCol_nome(String col_nome) {
Col_nome = col_nome;
}
public String getCol_Set_codigo() {
return Col_Set_codigo;
}
public void setCol_Set_codigo(String col_Set_codigo) {
Col_Set_codigo = col_Set_codigo;
}
}
-------MAPEAMENTO DO SETOR--------------------------------------
package src.portaria.vo;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
@Entity
@Table(name = "setor")
public class Setor {
// @SequenceGenerator(name="seqPed", sequenceName="seqPed", initialValue=1)
// @GeneratedValue(generator="seqPed", strategy=GenerationType.AUTO)
@Id //define a chave da classe a ser mapeada
private Long Set_codigo;
private String Set_nome;
private String Set_descricao;
private String Set_localizacao;
@ManyToOne(cascade=CascadeType.PERSIST)
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "Set_codigo", insertable=false, updatable=false)
private Colaborador colaborador;
public Colaborador getSetor() {
return this.colaborador;
}
public void setColaborador(Colaborador colaborador) {
this.colaborador = colaborador;
}
//
public Long getSet_codigo() {
return Set_codigo;
}
public void setSet_codigo(Long set_codigo) {
Set_codigo = set_codigo;
}
public String getSet_descricao() {
return Set_descricao;
}
public void setSet_descricao(String set_descricao) {
Set_descricao = set_descricao;
}
public String getSet_localizacao() {
return Set_localizacao;
}
public void setSet_localizacao(String set_localizacao) {
Set_localizacao = set_localizacao;
}
public String getSet_nome() {
return Set_nome;
}
public void setSet_nome(String set_nome) {
Set_nome = set_nome;
}
public String toString(){
return this.Set_nome;
}
}
Estou utilizando a seguinte consulta em hsql está correto a clausula juntamente com o método?
package src.portaria.dao;
import java.util.Iterator;
import java.util.List;
import javax.swing.JOptionPane;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import src.portaria.utils.ConnectDB;
import src.portaria.vo.Colaborador;
import src.portaria.vo.Visitante;
public class ColaboradorDAO {
private Session session;
public ColaboradorDAO() throws Exception {
}
public List procurarPorNome(String Col_nome) {
session = ConnectDB.getInstance();
Transaction tx = session.beginTransaction();
Query select = session.createQuery("FROM Colaborador as colaborador inner join colaborador.Setor Where Col_nome like :entrada");
select.setString("entrada", Col_nome);
//retorna uma unica linha de entrada
List list = select.list();
tx.commit();
session.close();
return list;
}//fim
}
Se for preciso mais informações para solucionar o problema pode pedir estou precisando muito de sua ajuda! blz