Session.evict() com Hibernate?

Salve galera…

Seguinte, eu estou tentando a dias fazer um saveOrUpdate() com Hibernate…Tenho uma tabela chamada Permissoes, nesta tabela eu tenho 2 campos FK: Idperfil e Idmodulo. O Idperfil é FK da tabela perfil no campo Id, e o campo Idmodulo é FK da tabela modulos no campo Id.

O que acontece é quando vou dar um update nesta tabela baseado no idperfil, ao invés de dar um update no que tem, é criado novos registros. Acho que isto acontece pq na tabela Permissoes eu tenho uma PK chamada Id e com autoincremento, então eu quero ignorar essa PK no saveOrUpdate().

Bem, resumindo tudo…O saveOrUpdate(), não da update e sim duplica os registros que ja tenho. Eu preciso que ele salve se não existir e de update de existir. Acredito que ignorando o Id da tabela Permissoes funcionaria, porem não sei como fazer isso.

Andei lendo umas coisas, e li algo sobre o evict…Porem não consegui implementar. Alguma sugestão ?

Tentei assim.

Permissoes permissoes = new Permissoes();
session.evict(permissoes.getClass().getId());
session.saveOrUpdate(permissoes);

obrigado