You have many @Persist annotations which I think are unnecessary. As a rule, if it's in the database, you don't need to store it in the session. Instead, pass an id (or ids) in the URL via the page activation context and look up the entities each time.
There's a caveat to this rule that you often need to store the user id in the session for security reasons (you can't trust a url). In earlier versions of tapestry, you needed flash persistence for errors since the state is not stored in the DB and tapestry did a redirect after post. In later versions of tapestry this is not required since it does not redirect after post for validation errors.