Sun Java System Application Server Platform Edition 9 リリースノート

EntityManager.find() を行うと、誤って IllegalArgumentException が発生する。

主キークラスが @IdClass 注釈で定義されている場合、EntityManager.find() を行うと、別のエントリのサブクラスであるエンティティーに対して IllegalArgumentException が誤って発生します。詳細については、https://glassfish.dev.java.net/issues/show_bug.cgi?id=595 を参照してください。

解決方法

find() メソッドへの引数として、最上位のスーパークラスのクラスを使用し、その結果をサブクラスへキャストしてください。