Entity EJBs always have to have a primary key, but if the key is an object of and existing
Java class (such as java.lang.String) you don't have to wrap it in a custom primary key class.
There is a slight difference in the ejb-jar.xml depending on whether your key is an object or a primary key class and a lot of systems don't detect improper configuration, so use caution.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.