2016-11-29 11 views
0

В Hibernate 3, в классе org.hibernate.cfg.Configuration есть Карта классов свойство, которое содержит объекты типа org.hibernate.mapping.PersistentClass.Где я могу получить карту объектов PersistentClass, которая находилась под org.hibernate.cfg.Configuration в Hibernate 5?

В приложении Grails (которое использует спящий режим под обложками) я расширял класс, расширяющий org.hibernate.cfg.Configuration. Это позволило мне задействовать классы Map и сделайте следующее:

for(PersistentClass pc : classes.values()) { 
    for(Iterator iterator = pc.getTable().getForeignKeyIterator(); iterator.hasNext();) { 
     ForeignKey fk = (ForeignKey) iterator.next();    
     iterator.remove();  
} 
} 

В принципе, я удаление внешних ключей в некоторых таблицах 3-й партии.

Я хочу перейти на Hibernate 5, но новый класс конфигурации не имеет классов Map, от которых я зависим.

  1. Как получить карту объектов PersistentClass, чтобы я мог продолжать удалять их внешний ключ?

  2. Если это не должно быть сделано через конфигурацию больше, как мне получить доступ к постоянным объектам? Через какой класс?

enter image description here

Пожалуйста, помогите. Я застрял.

+0

Возможный дубликат [Hibernate Migration от 4.3.x до 5.x для метода org.hibernate.cfg.Configuration.getClassMapping (className)] (http://stackoverflow.com/questions/32780664/hibernate-migration-from -4-3-x-to-5-x-for-method-org-hibernate-cfg-configuration) – JimmyB

+0

JimmyB это не дубликат. Пожалуйста, прочитайте оба вопроса. У вас есть представление о том, как я могу получить карту всех объектов PersistentClass в Hibernate 5? – Viriato

+1

Для меня это дубликат. Вроде. Ответ на другой вопрос показывает, как удержать «метаданных» с Hibernate. При этом вы должны иметь возможность вызвать, например, '' getEntityBindings() '] (https://docs.jboss.org/hibernate/orm/5.1/javadocs/org/hibernate/boot/Metadata.html#getEntityBindings -), чтобы получить все 'PersistentClass'es. Что еще тебе нужно? – JimmyB

ответ

0

я думаю, что первое, что мы должны получить экземпляр StandardServiceRegistry, как показано ниже:

StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure(configFileURL).build(); 

, то мы можем получить экземпляр метаданных из этого экземпляра StandardServiceRegistry, как:

Metadata metaData = new MetadataSources(standardRegistry).getMetadataBuilder().build(); 

после этого, мы можем получить все PersistentClasses из этого экземпляра metaData, как показано ниже:

Collection<PersistentClass> entityBindings = metadata.getEntityBindings(); 

это то, что вам нужно?