Problema com relacionamento ManyToMany

0 respostas
K
Possuo duas classe Cliente
@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;
e a classe Questionario
@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;
e estou realizando o seguinte teste
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"

Criado 25 de fevereiro de 2011
Respostas 0
Participantes 1