Yes, it is intended to provide a safe and decent hashcode()/ equals() implementation that we can use in application code. If you don't use/invoke a hashCode() call prior to the beans being loaded with an Id value ... it will work nicely. It can't do better and be safe (not change the hashCode() value).
Ebean does not rely on hashCode/equals ... so yes you can override it if you desire.
> is there any problem for me in overriding equals and hashCode (and not using ebean's generated one) in my own class?
No except you should note that it is difficult to implement given the nature of entity beans (they mutate and generally don't have an id value until after they have been saved etc). That is, we should not really have an implementation where the hashCode value changes (as then an entry goes "missing" as the hashCode now means the a different bucket is looked into).
In general, the issues (and lack of awareness) around this means that:
A) I encourage the use of List over Set in entity models
B) I usually use findMap() as a better alternative to using equals
Cheers, Rob.