Problemas ao persistir uma Collection no Hibernate Annotatio

Olá pessoal,

Estou com o seguinte problema:
Tenho as tabelas:
Funcionario
DRT<<PK>>
Nome

RO
IDRO<<PK>>
DRT<<FK>>
Data

Testemunha
DRT<<PK>><<FK>>
IDRO<<PK>><<FK>>

Classe Funcionario

 @Entity
 @Table&#40;name=&quot;funcionario&quot;&#41;
 public class Funcionario implements java.io.Serializable &#123;
     
     
      @Id
     @Column&#40;name=&quot;drt_funcionario&quot;, unique = true, nullable = false&#41;
     private int drt;
     private String nome;
     private String senha;
     
    //Metodos Get e Set
 
  &#125;   

Classe RO

 @Entity
 @Table&#40;name=&quot;ro&quot;&#41;
 public class Ro implements java.io.Serializable &#123;
     @Id
     @Column&#40;name=&quot;idro&quot;, unique = true, nullable = false&#41;
     @GeneratedValue&#40;strategy=GenerationType.IDENTITY&#41;
     private int idro;
     private String tipo;
     private String unidade;
     @Column&#40;name=&quot;local&quot;&#41;
     private String localRo;
     @Temporal&#40;value = TemporalType.DATE&#41;
     @Column&#40;name=&quot;data&quot;&#41;
     private Date dataRo;
     private String horario;
     private String envolvido;
     @Column&#40;name=&quot;tipoenvolvido&quot;&#41;
     private String tipoEnvolvido;
     private String relato;
     private String providencia;
     @Column&#40;name=&quot;assist_medica&quot;&#41;
     private String assistenciaMedica;
     private boolean afastamento;
     @Column&#40;name=&quot;atendido_por&quot;&#41;
     private String atendidoPor;
     @Column&#40;name=&quot;local_atend&quot;&#41;
     private String localAtendimento;
     private String lesao;
     private String observacao;
     private String efeito;
     
     @ManyToOne
     @JoinColumn&#40;name=&quot;drt_funcionario&quot;, nullable = false&#41;
     private Funcionario funcionario;
 
         @ManyToMany&#40;
     targetEntity=classes.Funcionario.class&#41;
             //cascade=CascadeType.ALL
     
     @JoinTable&#40;name=&quot;testemunha&quot;,
         joinColumns=@JoinColumn&#40;name=&quot;idro&quot;&#41;,
         inverseJoinColumns=@JoinColumn&#40;name=&quot;drt_funcionario&quot;&#41;&#41;
     private Collection funcionarios = new ArrayList&#40;&#41;;
 
//Metodos Get and Set
&#125;

Classe Hibernate Teste

 public class HibernateTeste &#123;
     
          
             
             //Povoando o objeto funcionario
             Funcionario funcionario = new Funcionario&#40;&#41;;
             funcionario.setDrt&#40;5&#41;;
             funcionario.setNome&#40;&quot;teste&quot;&#41;;
             funcionario.setSenha&#40;&quot;teste&quot;&#41;;
             
             //Adicionando o objeto funcionario na Collection
             Collection funcionarios = new ArrayList&#40;&#41;;
             funcionarios.add&#40;funcionario&#41;;
             
             //Povoando o objeto ro
             Ro ro = new Ro&#40;&#41;;
             ro.setUnidade&#40;&quot;Teste&quot;&#41;;
             ro.setDataRo&#40;data&#41;;
             ro.setFuncionario&#40;funcionario&#41;;
             
             //Povoando outro objeto funcionario
             funcionario.setDrt&#40;6&#41;;
             funcionario.setNome&#40;&quot;teste2&quot;&#41;;
 
             //adicionando objeto funcionario na Collection
             funcionarios.add&#40;funcionario&#41;;
 
            //Setando a collection de funcionarios no objeto RO
             ro.setFuncionarios&#40;funcionarios&#41;;
           
             Session session = HibernateUtil.getSession&#40;&#41;;
             session.beginTransaction&#40;&#41;;
             session.save&#40;ro&#41;;
             session.getTransaction&#40;&#41;.commit&#40;&#41;;
 
             
         &#125; catch &#40;HibernateException e&#41; &#123;
             e.printStackTrace&#40;&#41;;
         &#125;
     &#125;
 &#125;

O problema é que quando eu tento persistir o objeto RO que tem a collection de funcionários e deveria persistir no banco na tabela Testemunha, ele dá um erro como se tentasse gravar 2 vezes a mesma combinação de PK e FK. Só funciona se eu setar apenas um funcionário na collection. O que estou fazendo errado?

O seguinte erro é exibido no NetBeans

Hibernate&#58; select funcionari_.drt_funcionario, funcionari_.nome as nome0_, funcionari_.senha as senha0_ from funcionario funcionari_ where funcionari_.drt_funcionario=?
 Hibernate&#58; insert into ro &#40;tipo, unidade, local, data, horario, envolvido, tipoenvolvido, relato, providencia, assist_medica, afastamento, atendido_por, local_atend, lesao, observacao, efeito, drt_funcionario&#41; values &#40;?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?&#41;
 Hibernate&#58; insert into testemunha &#40;idro, drt_funcionario&#41; values &#40;?, ?&#41;
 Hibernate&#58; insert into testemunha &#40;idro, drt_funcionario&#41; values &#40;?, ?&#41;
 org.hibernate.exception.ConstraintViolationException&#58; Could not execute JDBC batch update
         at org.hibernate.exception.SQLStateConverter.convert&#40;SQLStateConverter.java&#58;71&#41;
         at org.hibernate.exception.JDBCExceptionHelper.convert&#40;JDBCExceptionHelper.java&#58;43&#41;
         at org.hibernate.jdbc.AbstractBatcher.executeBatch&#40;AbstractBatcher.java&#58;249&#41;
         at org.hibernate.engine.ActionQueue.executeActions&#40;ActionQueue.java&#58;235&#41;
         at org.hibernate.engine.ActionQueue.executeActions&#40;ActionQueue.java&#58;143&#41;
         at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions&#40;AbstractFlushingEventListener.java&#58;298&#41;
         at org.hibernate.event.def.DefaultFlushEventListener.onFlush&#40;DefaultFlushEventListener.java&#58;27&#41;
         at org.hibernate.impl.SessionImpl.flush&#40;SessionImpl.java&#58;1000&#41;
         at org.hibernate.impl.SessionImpl.managedFlush&#40;SessionImpl.java&#58;338&#41;
         at org.hibernate.transaction.JDBCTransaction.commit&#40;JDBCTransaction.java&#58;106&#41;
         at teste.HibernateTeste.main&#40;HibernateTeste.java&#58;94&#41;
 Caused by&#58; java.sql.BatchUpdateException&#58; Duplicate entry '23-6' for key 1
         at com.mysql.jdbc.ServerPreparedStatement.executeBatch&#40;ServerPreparedStatement.java&#58;652&#41;
         at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch&#40;BatchingBatcher.java&#58;48&#41;
         at org.hibernate.jdbc.AbstractBatcher.executeBatch&#40;AbstractBatcher.java&#58;242&#41;
         ... 8 more

Me desculpem pelo Post duplicado, não foi minha inteção. Na verdade ao postar o navegador ficou enviando por um tempão e deu erro, então, dei um voltar e cliquei em envia novamente.
Me desculpem!

Wallfox, tudo bem?
Vc já conseguiu solucionar seu problema?
Não entendi direito o que você quer fazer.
O que é RO?
Vi um erro no seu código de teste de inserção.

Se você já solucionou, posta ai.

Abraços.