I have the exact same problem as you. I can't believe JBoss can't be spec-compliant after so many months!
Anyway, here are two solutions that worked for me:
- use the "Instance Per Transaction CMP 2.x EntityBean" container configuration
- lazily compute the internal fields when they are first accessed, and reset them to null in ejbStore, to make sure an incorrect cached value is not used in the next transaction.