Boa noite pessoal, estou com um problema para fazer uma inserção de dados via hibernate.
Pelo log ele esta gerando o código SQL com um campo errado, este campo é um campo de relacionamento, gostaria que me ajudassem a solucionar este problema.
Segue o codigo:
Classe Pesquisa
package br.com.JPA.model;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name="tb_pesquisa")
public class Pesquisa {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_id_pesq")
@SequenceGenerator(name="seq_id_pesq", sequenceName="seq_id_pesq", allocationSize=1)
@Column(name="id_pesq")
private long id;
@Column(name="pergunta_pesq")
private String pergunta;
@Column(name="descricao_pesq")
private String descricao;
@OneToMany(fetch=FetchType.EAGER, cascade=CascadeType.PERSIST)
//@JoinColumn(name="id_pesq")
private List<Opcao> opcoes;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getPergunta() {
return pergunta;
}
public void setPergunta(String pergunta) {
this.pergunta = pergunta;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public List<Opcao> getOpcoes() {
return opcoes;
}
public void setOpcoes(List<Opcao> opcoes) {
this.opcoes = opcoes;
}
}
Classe Opcao
[code]package br.com.JPA.model;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name=“tb_opcao”)
public class Opcao {
@Id
@SequenceGenerator(name="seq_id_opcao", sequenceName="seq_id_opcao", allocationSize=1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_id_opcao")
@Column(name="id_opcao")
private long id;
@Column(name="descricao_opcao")
private String descricao;
@ManyToOne
private Pesquisa pesquisa;
public Opcao(){
}
public Opcao(String descricao){
this.descricao = descricao;
}
/**
* @return the id
*/
public long getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(long id) {
this.id = id;
}
/**
* @return the descricao
*/
public String getDescricao() {
return descricao;
}
/**
* @param descricao the descricao to set
*/
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Pesquisa getPesquisa() {
return pesquisa;
}
public void setPesquisa(Pesquisa pesquisa) {
this.pesquisa = pesquisa;
}
}
[/code]
e este é o código SQL gerado…
Hibernate: select nextval (‘seq_id_pesq’)
Hibernate: select nextval (‘seq_id_opcao’)
Hibernate: select nextval (‘seq_id_opcao’)
Hibernate: select nextval (‘seq_id_opcao’)
Hibernate: insert into tb_pesquisa (descricao_pesq, pergunta_pesq, id_pesq) values (?, ?, ?)
Hibernate: insert into tb_opcao (descricao_opcao, pesquisa_id_pesq, id_opcao) values (?, ?, ?)
Hibernate: insert into tb_opcao (descricao_opcao, pesquisa_id_pesq, id_opcao) values (?, ?, ?)
Hibernate: insert into tb_opcao (descricao_opcao, pesquisa_id_pesq, id_opcao) values (?, ?, ?)
o campo “pesquisa_id_pesq” não existe, na verdade ele é “id_pesq” no banco de dados, mas o hibernate não deveria criar como “id_pesq” uma vez que eu usei a anotação @JoinColumn(name=“id_pesq”)?
Obrigado, pessoal