This is caused by a bad hashCode or equals method in a custom primary key class.
One way I was able to fix it was by making the TXN of the method that contains the operations "Required".
Also, I generate the PK class using XDoclet, I appears to be a good Key class in terms of hashCode and equals.
Anything else I could look at?
The actual steps after reading my first post are,
1) Call CMP EJB methods (getXxxx1, getXxxx2, ...)
Oh you weren't running with a transaction. If you want to do that, you need to run the cvs code, and then I still don't guarantee it works. Running without a tx is not something I recommend, as the overhead of a tx is very small.
So would you recommend that every method on my Session beans run with a transaction?
I would, but this is just my opinion. Most people confuse transaction with locking, and it is the locking that impacts preformance. JBoss allows you to turn off locking for some readonly methods, but I don't know exactally how you do it (Bill Burke's code).
If you want to run without a cmp 2.0 entity without tx, you will need to use the cvs Branch_3_0 code, because there was a bug in the 3.0 release.