JPA Toplink com cascade

Pessoal, tenho uma classe Pessoa e ela terá uma lista de contatos (List). Para que os contatos pudessem ser adicionados ao BD sem precisar cadastrar o Contato antes de adicioná-lo à Pessoa, coloquei para o atributo List a annotattion @OneToMany(cascade = CascadeType.ALL). A partir daí funcionou beleza, eu adiciono um Contato à lista e ele automaticamente cadastra o Contato no banco e já linka tudo direito.

O problema aconteceu quando tentei remover um Contato de uma Pessoa. Ele simplesmente não remove (do banco de dados, no java ele não reclama). A tabela que guarda os contatos mantém todos os dados, logo, quando ele lista novamente e pega os dados, os Contatos removidos aparecem novamente nas listas.

Ví em algum lugar dizendo que para remover era para o cascade estar como CascadeType.REMOVE, só que não sei se dessa forma ele vai conseguir colocar os dados automaticamente ao adicionar a lista de contatos.

Alguém tem idéia do que está acontecendo?