Did you manually set the scopes on your subclasses? If not, then they are inherited from their superclasses. EntityHome's default scope is Conversation, while EntityQuery's default scope is Event. This affects where @DataModel stores the DataModel, if you didn't specify its scope attribute.
Good call. I'd tried this before without success, I think because I hadn't correctly started the conversation. Setting the scope to conversation seems to do the trick. Thanks!
This opens another problem however: The header sorting doesn't work as desired in Conversation scope as the table isn't immediately sorted. I'll have to think about how to fix that. If you have encountered this or have suggestions let me know.
Update: Setting the scope to CONVERSATION makes those edit and save links work (provided they are h:commandLink's and not s:link's), but then the header sorting of the table doesn't work.
With the scope set to PAGE the sorting works and the entity that's being edited with the edit and save operations gets updated but doing em.persist on it doesn't write the information into the database.
Any ideas why that is and how it can be remedied?
Also, I tried only setting the scope on the data model, but this also didn't seem to have an effect. I've seen the scope descriptions in the Seam tutorial, but since I am new to Java EE in general, I might need to do a bit more reading. Any suggestions for good online tutorials or books?
You should use EntityHome inside a long running conversation and EntityQuery should be in the event scope. You should use page parameters not datamodel/datamodelselection.
You could try Michael Yuan's books on Seam.