2015-06-25 5 views
0

Я пытался интегрировать спящий режим поддержки 4 мульти-аренде в нашем приложении, но я получаю ниже исключение на выполнение в запрос HQLHibernate 4 Multi-аренда Issue - Нет Entity Persisters Найдено

java.lang.ArrayIndexOutOfBoundsException: 0 
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.resultClassChecking(AbstractEntityManagerImpl.java:362) 
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:344) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:344) 
    at com.sun.proxy.$Proxy288.createQuery(Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:291) 
    at com.sun.proxy.$Proxy43.createQuery(Unknown Source) 

запрос HQL это -

List<Field> fields = entityManager.createQuery("from " + Employee.class.getName() + 
        " where " + getQueryForInClause("id", ids), Employee.class).getResultList(); 

на источнике спящей отладки, я понимаю, что это происходит потому, что SessionFactory экземпляр в Hibernate не имеет какие-либо экземпляров entityPersister из-за которой запрос HQL имеет любой переводчик.

Это потому, что бобы Entity не проверяются? Если да, то что может быть причиной?

entityFactory весной объявлен ниже

<property name="persistenceProviderClass" value="org.hibernate.jpa.HibernatePersistenceProvider"/> 
<property name="persistenceXmlLocation" value="/com/software/persistence/persistence.xml"/> 
<property name="jpaProperties"> 
    <map> 
     <entry key="hibernate.id.new_generator_mappings" value="true"/> 
     <entry key="hibernate.cache.use_second_level_cache" value="false"/> 
     <entry key="hibernate.dialect" value="com.software.persistence.ExtendedOracle10gDialect"/> 
     <entry key="hibernate.jdbc.batch_size" value="10"/> 
     <entry key="hibernate.jdbc.batch_versioned_data" value="true"/> 
     <entry key="hibernate.jdbc.batch.builder" value="com.software.persistence.OracleBatchBuilder"/> 
     <entry key="hibernate.multiTenancy" value="DATABASE"/> 
     <entry key="hibernate.tenant_identifier_resolver" 
        value="com.software.persistence.MultitenantIdentifierResolver"/> 
     <entry key="hibernate.multi_tenant_connection_provider" 
        value-ref="multiTenantConnectionProvider" /> 
    </map> 
</property> 

ответ

1

В основном ошибка, кажется, потому что объектные компоненты не проверяется.

Можете ли вы также передать настойчивость.xml для справки.

После можно попробовать в целях дальнейшей отладки (один из них шага может можно решить вопрос, который я предполагаю)

1 Specify persistenceXmlLocation с классами, как это <property name="persistenceXmlLocation" value="classpath:/com/software/persistence/persistence.xml"/>

2 Try с persistenceUnitPostProcessors для сканирования бобы примерно такие <property name="persistenceUnitPostProcessors" ref="some_implementation_bean_ref"/>