Saudações a todos!
Eu tenho uma tabela pergunta e outra tabela resposta
uma resposta pode ter varias perguntas, ou seja, tenho um relacionamento de 1:n entre as tabelas pergunta e resposta…
toda via, quando eu insiro uma pergunta no banco com suas respequitivas respostas, o atributo ?idpergunta? da tabela resposta vem com valor ?null?.
Como não houvesse pergunta relacionada a resposta.
uso:
WindowsXP(testei no linux)
hibernate3
java6
banco Mysql
@Entity
public class Resposta {
@Id
@GeneratedValue
private int idRespostas;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="idPergunda", insertable=true, updatable=true)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
private Pergunta pergunta;
private String respostas;
@Column(name="qtdTotalVotos")
private int votos;
//construtores padrão
public Resposta(){
}
public Resposta(int idRespostas, Pergunta pergunta, String respostas, int votos) {
this.idRespostas = idRespostas;
this.pergunta = pergunta;
this.respostas = respostas;
this.votos = votos;
}
//gets set
}
@Entity
public class Pergunta {
@Id
@GeneratedValue
private int idPergunta;
private String pergunta;
@OneToMany(mappedBy="pergunta")
@Cascade(CascadeType.ALL)
private Collection<Resposta> resposta;
//construtor padrão
public Pergunta() {}
public Pergunta(String pergunta, Collection<Resposta> resposta) {
this.pergunta = pergunta;
this.resposta = resposta;
}
//gets sets
}
public class RepositorioPergunta {
private Session s;
public RepositorioPergunta(){
s = Conecxao.getSession();
}
public void salvarPergunta(Pergunta p){
Transaction tx = s.beginTransaction();
s.save(p);
tx.commit();
}
}
public class SalvarResposta {
public static void main(String[] args) {
Pergunta p = new Pergunta();
p.setPergunta("onde eu fui");
Resposta r1 = new Resposta();
r1.setRespostas("opacao1");
r1.setPergunta(p);
Resposta r2 = new Resposta();
r2.setRespostas("opção2");
r2.setPergunta(p);
Resposta r3 = new Resposta();
r3.setRespostas("opacao3");
r3.setPergunta(p);
p.setResposta(new HashSet <Resposta>());
p.getResposta().add(r1);
p.getResposta().add(r2);
p.getResposta().add(r3);
RepositorioPergunta rp = new RepositorioPergunta();
rp.salvarPergunta(p);
}
}
Grato pela atenção e paciente de ter lido até o final. faz poucas horas que estou estudando o hibernate, logo, pessos desculpas pela falta de informação teórica e pratica.