One thing I think JPA is lacking is the ability to map read-only result classes, without annotating them as @Entity and making the provider expect table for them. ConstructorResult is a pretty hacky way of getting there and loses some of the benefits like lazy loading collections and in Hibernate's case query caching.