Quote:
My next try is to use State Pattern, externalize the state and subclass that so as a RejectState has a reference to Rejection (ouch).
Does that make sense?
Sure. It all depends on the app requirements. But that's the cool thing about a good OR tool like Hibernate. It lets you code the app domain objects the way the app requirements dictate and then map that to the db.
Personally, I'd ask whether that's really what you want to model in the OO realm. Not knowing all your requirements, it sounds like an optional association or subclassing of the item into a rejected-item is more aligned with what your trying to model. But then again I really don't know the requirements the way you do.
If state is actually representing a state-machine or workflow progression, then it would be more conducive to model it the way you mention.