@Entity
@Table(name="Cliente", schema="Tecnicos")
@SequenceGenerator(name="SEQ_CLI", sequenceName="SEQ_CLIENTE", allocationSize=1, initialValue=1)
public class Cliente implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="SEQ_CLI")
@Column(name="cli_id", nullable=false)
@Resolvable(colName="ID")
private Integer id;
@Column(name="cli_codext")
@Resolvable(colName="CÓDIGO")
private Integer codigoExterno;
@Column(name="cli_fili")
@Resolvable(colName="FILIAL")
private Integer filial;
@Column(name="cli_razaosocial", length=80)
@Resolvable(colName="RAZÃO SOCIAL")
private String razaoSocial;
@Column(name="cli_nomefantasia", length=80)
@Resolvable(colName="NOME FANTASIA")
private String nomeFantasia;
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="questionario_cliente", schema="Tecnicos",
joinColumns=@JoinColumn(name="cli_id"),
inverseJoinColumns=@JoinColumn(name="ques_id"))
private Collection<Questionario> questionarios;
@Entity
@Table(name="Questionario", schema="Tecnicos")
public class Questionario implements Serializable {
@Id
//@SequenceGenerator(name="SEQ_QUEST", sequenceName="SEQ_QUESTIONARIO", allocationSize=1)
//@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_QUEST")
@Column(name="que_id", nullable=false)
@Resolvable(colName="ID")
private Integer id;
@Column(name="que_descricao", length=80)
@Resolvable(colName="DESCRIÇÃO")
private String descricao;
@Column(name="que_requerido", length=20)
@Resolvable(colName="REQUERIDO")
private Boolean requerido;
@Column(name="que_comentario", length=250)
@Resolvable(colName="COMENTÁRIO")
private String comentario;
@Temporal(TemporalType.DATE)
@Column(name="que_dataini")
@Resolvable(colName="INICIA EM", formatter=DateFormatter.class)
private Date dataInicio;
@Temporal(TemporalType.DATE)
@Column(name="que_datafim")
@Resolvable(colName="FINALIZA EM", formatter=DateFormatter.class)
private Date dataFim;
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="questionario_cliente", schema="Tecnicos",
joinColumns=@JoinColumn(name="ques_id"),
inverseJoinColumns=@JoinColumn(name="cli_id"))
@Resolvable(colName="CLIENTE")
private Collection<Cliente> clientes;
try{
session = HibernateUtil.getSessionFactory().openSession();
GenericDAO<Cliente> dao = new GenericDAO<Cliente>(Cliente.class, session);
GenericDAO<Questionario> dao2 = new GenericDAO<Questionario>(Questionario.class, session);
Cliente cli = dao.findByID(94);
Questionario que = dao2.findByID(1);
que.setClientes(new HashSet<Cliente>());
que.getClientes().add(cli);
cli.setQuestionarios(new HashSet<Questionario>());
cli.getQuestionarios().add(que);
dao2.saveOrUpdate(que);
}
catch(HibernateException ex){
JOptionPane.showMessageDialog(null, "Erro: "+ex.getMessage(),
"Erro", JOptionPane.ERROR_MESSAGE);
}
catch(Exception ex){
JOptionPane.showMessageDialog(null, "Erro: "+ex.getMessage(),
"Erro", JOptionPane.ERROR_MESSAGE);
}
finally{
session.close();
}
mais quando eu executo o teste são inseridos duas linha iguais na tabela do relacionamento "Questionario_cliente"