1. It makes no sense to use a null collection reference. It's always better to just initialize it to a new ArrayList or HashSet and free your code from null checks.2. Using EAGER is bad for performance.3. Using CascadeType.ALL means that you inherit CascaadeType.REMOVE which is bad for @ManyToMany.

So, try isolating it with our test case templates, and you'll surely find what you did wrong. You can also debug the test I mentioned on the GitHub repository and compare with yours to see where they differ.