いくつかの異なるエンティティタイプを含むSelectItemリストに使用するJSFコンバータがあります。 getAsString()
メソッドでは、 ":"とIDの接尾辞が付いたクラス名として文字列を作成します。javassist-edのHibernateエンティティをロードしています
MySuperClass superClass = (MySuperClass)value;
if(superClass != null) {
return String.valueOf(superClass.getClass().getName()+":"+superClass.getId());
}
これは私がこれを行うことによって、UIからの帰りにgetAsObject()
で正しいエンティティをロードすることができます:
私の問題はgetAsString()
の私のエンティティはプロキシであるということです。 getClass()。getName()を実行するとcom.company.MyEntity
を取得する代わりにcom.company.MyEntity_$$_javassist_48
を取得しているので、find()
に失敗します。
具体的なクラス名(例:com.company.MyEntity)を取得する方法はありますか(文字列操作以外)?
ありがとうございました。
私は」 (HibernateProxy)エンティティ).getHibernateLazyInitializer()。getEntityName()またはgetPersistentClass()しかし、HibernateProxyはそれをラップして、おそらく行く方法です。 –
または単にHibernate.getClass() –
偉大な回答者。それは私をたくさん助けました。 – Mythul