У меня есть конвертер JSF, который я использую для списка SelectItem, содержащего несколько различных типов сущностей. В методе getAsString()
я создаю строку как имя класса с суффиксом «:» и идентификатором.
MySuperClass superClass = (MySuperClass)value;
if(superClass != null) {
return String.valueOf(superClass.getClass().getName()+":"+superClass.getId());
}
Это позволяет мне загрузить правильную сущность в getAsObject()
на обратном пути из интерфейса, выполнив следующее:
String className = value.substring(0, value.indexOf(":"));
long id = Long.parseLong(value.substring(value.indexOf(":")+1));
Class<T> entitySuperClass = (Class<T>) Class.forName(className);
MySuperClass superClass = (MySuperClass)getEntityManager().find(entitySuperClass, id);
Моя проблема в том, что моя сущность в getAsString()
является прокси. Таким образом, вместо получения com.company.MyEntity
, когда я выполняю getClass (). GetName (), я получаю com.company.MyEntity_$$_javassist_48
, поэтому на find()
происходит сбой.
Есть ли какой-либо способ (кроме манипуляции со строкой) получить конкретное имя класса (например, com.company.MyEntity)?
Спасибо.