Hibernate implemented @ElementCollection in the JPA by binding the persistence of the ElementCollection of a new entity at the end of the transaction, and NOT at the time you tell the EntityManager to persist. Under most use cases, this should not be a problem, however it does mean that you cannot detach the entity from the EntityManager prior to ending the Transaction.
For example, the following will not persist your ElementCollection.
You will likely not run into situations like this, however I'm posting as I ran into some code that I was refactoring for Spring 3.1. 3.1 did not like nested @Transactions on a particular thread, and in the code's original design, it was detaching the entity on the nested item to avoid conflicts, I removed the nested @Transaction but did not notice the detach, and spent days figuring out why hibernate was not persisting the collection. The answer is, as stated above, hibernate does not persist the collection at .persist, but on commit.