Hibernate で名前が同じ複数のクラスに対して O/R マッピングする

org.foo.bar.Preference というクラスと org.blah.hoge.Preference というクラスがあるときに、それぞれをデータベースに保存できるようにしようとして散々ハマったので書いて起きます。
名前空間が異なるので一見問題なさそうに思えるんですが、実際にこれをやろうとすると tomcat 起動時にマッピングファイルが読み込めないという不具合が発生して悩まされていました。過去に遭遇したときは、時間もなく対策が見つけられなかったためクラス名が衝突しないように名前を変更して対応*1していました。が、今回さすがに業を煮やして eclipse 上のデバッガで追いかけてみたところ、握りつぶされていた Exception の内容を見ることができました。

org.hibernate.DuplicateMappingException: duplicate import: Preference refers to both org.foo.bar.Preference and org.blah.hoge.Preference (try using auto-import="false")

確かに衝突していました。またその対応策に auto-import なるものがあるようです。Hibernate のリファレンス によると、

auto-import (optional - defaults to true): specifies whether we can use unqualified class names of classes in this mapping in the query language.

クエリの中で無資格のクラス名が使えるようにする、とあるので名前空間が省略されたクラスに対して自動的に補完でもしてくれるんでしょうか。これを禁止したい時は、双方のマッピングファイル(手元の環境では src/org/foo/bar/Preference.hbm.xml と src/org/blah/hoge/Preference.hbm.xml)の中で以下のように書けばよいようです。

<hibernate-mapping auto-import="false">
...
</hibernate-mapping>

これで tomcat は無事起動でき、2つのクラスがどちらもデータベースに保存できるようになりました。
というか、そもそもデフォルトの設定が auto-import="true" というのが何とも納得が行きません…。初心者にとっては優しいのかもしれませんが、後々 O/R マッピングの数が増えてきた頃にハマることは必至です。デフォルトを false にして名前空間までちゃんと書く癖を付けさせた方がいいのに…と思ってしまいました。

*1:多数のjavaソースやxmlファイルに変更が及んで大変