2014-09-10 15 views
1

Предположим, что я создаю объект в java с именем Point с 2 атрибутами (int x & int y), и я храню некоторые экземпляры в файле objectdb. Я знаю, как извлекать все элементы (как объекты) из этого файла, но как я могу получить доступ к их атрибутам, если у меня больше нет определения класса Point?Используйте объект, хранящийся в файле objectdb, без определения его класса

определение точки

Class Point { 
    int x; 
    int y; 
} 

Затем я создаю 2 Points (0,0) (1,1) и хранить их в ObjectDB файл (я могу предоставить код, если это необходимо)

Я извлечь все экземпляры Point, с этим утверждением

 TypedQuery<Object> query = em.createQuery("SELECT o FROM Object o", Object.class); 
    List<Object> results = query.getResultList(); 

Якобы у меня есть только ObjectDB файл, а не точки CLAS как я могу получить значения x и y (даже как простые строковые значения)?

Заранее спасибо

+0

Только способ взломать ваш путь через двоичную сериализованную версию – ControlAltDel

+0

Так что файл objectdb практически бесполезен, если он стоит один? – AkiS

+0

Без определения класса для десериализации, да – ControlAltDel

ответ

0

Когда определение класса отсутствует ObjectDB автоматически генерирует синтетический класс по классу схеме, как хранятся в базе данных. Поэтому запрос в вашем примере возвращает экземпляры синтетического класса Point, сгенерированного ObjectDB.

Вы можете получить доступ к своим данным с помощью API Java Reflection (возможно, используя API метамодели JPA).