EntityNotFoundExceptionにはThrowableを受け付けるコンストラクタがない
Java EE勉強会でThrowableなクラスにThrowableを受け付けるコンストラクタがないやつがあるという話がありました。実は下に出てきたEntityNotFoundExceptionもその1つ。
http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityNotFoundException.html
でも、Hibenateが使っているEntityNotFoundExceptionにはThrowableを受け付けるコンストラクタがあってHibernate内で実際に使われているんです。
http://www.hibernate.org/hib_docs/ejb3-api/javax/persistence/EntityNotFoundException.html
これって...。
S2Tigerにもjavax.persistenceパッケージのクラスを持っている(これはsunの方(JPA仕様)と同じ)のですが、S2Hibernate-JPAを使っているときに、先にS2Tigerの方のEntityNotFoundExceptionを読み込んでいると、Hibenateがこのコンストラクタを使おうとした時点でNoSuchMethodErrorが出ちゃうんですよね...
実はEntityNotFoundException以外にも、JPAで定義されているクラスとHibernateのjavax.persistenceに属するクラスで定義が違うものがいくつかあるのです。
Hibernateの3.2のfinalでちゃんとJPA仕様に合わせてくれるのでしょうか?というか合わせてくれないとまずいような気がします。