I wonder if this isn't related to the statement batching support introduced in the 1.2.x branch? As Mike has pointed out, this works on everything past 1.2.x. And, the statement batching support definitely affects the order of the statements being pushed out to the database.
Although putting the em.flush() into the testcase may resolve this issue on 1.1.x, we would be implicitly disabling statement batching since now we're pushing out every insert to the database when first persisted. This might accidentally cover up other useful test scenarios. Of couse, if we just limit this testcase update to the 1.1.x branch, then that would be safer. But, I don't like to do that just to get a testcase to pass.
Instead of just modifying the testcase, I think the root cause of the problem on 1.1.x needs to be determined. If, after that investigation, it's determined that the testcase is incorrect and needs to changed, then we have the proper background and reasons.
End of my two cents worth...