I had a similar problem.
It turned out to be a problem with my Primary key class used by the child table. I am not sure if you are using A Primary Key class. If you are keep reading
The Primary key class I used had the foreign key as the primary key so when the equals method in my primary key class was called it did not evaluate correctly and I got duplicates back.
Just change the primary key in you primary key class to something else. Use any other field as long as it has unique values.
I hope this helps