Получение информации о спящем режиме во время выполнения - PullRequest
4 голосов
/ 06 апреля 2011

Я ищу способ получения информации о моих классах спящих сущностей во время выполнения. Подробно мне нужна информация типа

Класс ABC имеет свойства a, b и c, где c является список и ассоциация с классом XYZ

для класса

public class ABC {
    private int a;
    private String b;

    @OneToMany
    Private List<XYZ> c;
}

Все, что нужно во время выполнения. Я уверен, что Hibernate знает все это во время выполнения, но я не знаю, как получить эту информацию.

Ответы [ 4 ]

3 голосов
/ 06 апреля 2011
PersistentClass userMapping = cfg.getClassMapping(ABC.class);

cfg является экземпляром конфигурации Hibernate.

PersistentClass содержит всю необходимую информацию.

2 голосов
/ 06 апреля 2011

Если вы используете Hibernate в качестве поставщика JPA 2, то вы можете использовать метамодель JPA 2 (javax.persistence.metamodel). Это даст вам информацию о ваших сущностях JPA из метаданных JPA:

entityManager.getMetamodel().entity(entityClass). getAttributes();
0 голосов
/ 06 апреля 2011

Вы можете получить эту информацию, используя отражение.

Class abcClass= ABC.class;
Field[] fields = abcClass.getDeclaredFields();
0 голосов
/ 06 апреля 2011

Похоже, что отражение - это то, что вам нужно, это не специфическая информация о гибернации, за которой вы, похоже, ищете.Вам просто нужна информация о том, какие поля у класса и какие они типы ...

...