Let’s I have class
class Foo
and has two comparators for this class
class Comparator1 implements Comparator<Foo>
class Comparator2 implements Comparator<Foo>
now I am using TreeSet of Foo objects in my class Bar.
class Bar
{
private SortedSet<Foo> foos = new TreeSet(new Comparator1());
}
in xml mapping
<set name="foos"
sort="com.package.Comparator2"
fetch="subselect">
<key column="column" not-null="true"/>
<one-to-many class="Foo" />
</set>
Which comparator will be used by hibernate after loading set from database, and which will be used after persist?
Can I use in local modification Comparator1, but for loading and saving Comparator2?
Any collection will be rewritten while Hibernate loads entity from DB since it will need to use its own implementation of Set. If you created a brand new object and persisting it, then Comparator1 is still in use, because it’s still your collection, it’s not a Hibernate’s proxy.