It appears that the onActivate() method is called before the @PageActivationContext logic, which means the following can fail:
private MyEntity entity;
if (entity == null) throw new RuntimeException("Entity not found.");
The RuntimeException is thrown even when a valid Entity is in the page activation context.