Yagami,
What worked for me, is to have 2 versions of the entity: one "full" and one "abridged". The "abridged" is the one that has the view or subselect ad backend, and the "full" is the one that you would use when you need to update/insert/delete.
Notice that Hibernate does not like many objects floating around with the same ID, so, in order for this solution to work, you would have to make the "full" id a property of the "abridged" id, and indicate in the mapping file that "abridged" takes its ID from "full". This is indicated with the id generator called "foreign", in the following way:
Code:
<class name="abridgedClass">
<id name="id" column="classId">
<generator class="foreign">
<param name="property">fullClass</param>
</generator>
</id>
...
<one-to-one name="fullClass" class="FullClass" constrained="true"/>
...
</class>
<class name="fullClass" table="fullClass">
...
(reference documentation 5.1.1)