Então faltou falar que estou usando generic, portanto para dar update estou usando isso:
public void edit(T entidade) throws EaoException {
EntityManager sessao = JPAUtil.getSession();
try {
sessao.getTransaction().begin();
sessao.merge(entidade);
sessao.flush();
sessao.clear();
sessao.getTransaction().commit();
} catch (Exception e) {
sessao.getTransaction().rollback();
e.printStackTrace();
throw new EaoException(e.getMessage());
} finally {
if (sessao != null) {
sessao.close();
}
}
}
Ai tenho uma entidade produrador + clientes
Como sou da velha guarda, fiz a estruturação no banco e depois fiz a engenharia reversa ou seja:
tabela procurador: id,etc
tabela cliente: id, etc
tabela de conexão: id_procurador + id_cliente
Ai quando faço a engenharia reversa no Hibernate, ele claro não cria a entidade de conexão e coloca o tal:
No Procurador
@ManyToMany(mappedBy = “procuradorList”)
private List clienteList;
No Cliente
@JoinTable(name = “procurador_acionista”, joinColumns = {
@JoinColumn(name = “id_cliente”, referencedColumnName = “id_cliente”)}, inverseJoinColumns = {
@JoinColumn(name = “id_procurador”, referencedColumnName = “id_procurador”)})
@ManyToMany
private List procuradorList;
Teoricamente esta tudo certo, mas vai vc fazer o que falei para ver o resultado, ou seja tem 1 procurador e 3 clientes, deleta 1 e inclui 2.
Diretamentamente via generic não rola, nem a pau juvenal he he he 
Será que eu soube me explicar corretamente ( desculpe se não
)?
Abraços
Jomello