Hibernate - saverOrUpdate, merge, save?

Galera,
tô com um problema que tá me incomodando aqui desde ontem. No Hibernate não tô conseguindo inserir dados em uma tabela com o saveOrUpdate, nem com o merge que tenha chave primária compostal Eu tô usando o MS SQL Server 2000 e está dando um erro de ConstraintViolationException falando que a entrada já existe, o que é verdade. Porém, pelo que eu li na documentação o Hibernate já trata esses problemas e não geraria esse erro. Eu consigo inserir normal um registro inexistente. Eu teria então que sempre que for inserir um valor, verificar se ele já existe para não lançar essa exceção??
Porque se em uma página o usuário escolhe diversas opções ,e algumas delas já existem, usando o hibernate eu não precisaria sempre verificar o que já existe para não reinseri-las no banco, e apenas inserir as novas entradas.

Ou até então fazer um drop de tudo o que ele escolheu e inserir tudo denovo, pois ele pode deselecionar algumas opções também. Então, alguém tem alguma idéia?