org.hibernate.AssertionFailure: невозможно найти сопоставление сущности, на которую ссылаются - PullRequest
0 голосов
/ 28 сентября 2018

Мой проект использует hibernate3 вместе с весной 2.5.Теперь я переношу его в Spring5 и hibernate5 с помощью JPA.У меня есть hbm.xml для моих сущностей, использующих hibernate-mapping.После миграции я получаю сообщение об ошибке:

Причина: org.hibernate.AssertionFailure: Невозможно найти сопоставление сущности, на которую ссылаются [com.mycompany.common.admin.Entity1], чтобы обработать много-к-один FK: com.mycompany.common.admin.Entity2

У Entity2 есть FK "многие-к-одному" со ссылкой на Entity1

Код для entitymanagerfactory в applicationContext.xml:

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <property name="dataSource">
                <ref bean="myDataSource"/>
            </property>
            <property name="packagesToScan" value="com.mycompany"/>
            <property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter"/>
            <property name="persistenceUnitPostProcessors">
            <list>
                <bean
    class="org.springframework.data.jpa.support.ClasspathScanningPersistenceUnitPostProcessor">
                    <constructor-arg index="0" value="com.mycompany" />
                    <property name="mappingFileNamePattern" value="classpath*:com/**/*hbm.xml" />
                </bean>
            </list>
        </property>
            <property name="jpaProperties">
                <props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</prop>
                    <prop key="hibernate.show_sql">false</prop>
                </props>
            </property>
        </bean>

hbm.xml для Entity2 выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.mycompany.common.admin.Entity2" table="entity2">
        <id column="id" name="ID">
            <generator class="uuid"/>
        </id>
        <property name="name" type="string">
            <column name="name"/>
        </property>
        <many-to-one class="com.mycompany.common.admin.Entity1" name="entity1" not-null="true"/>

    </class>
</hibernate-mapping>

Трассировка стека ошибок:

Caused by: org.hibernate.AssertionFailure: Unable to locate referenced entity mapping [com.mycompany.common.admin.Entity1] in order to process many-to-one FK : com.mycompany.common.admin.Entity2.entity1
    at org.hibernate.boot.model.source.internal.hbm.ModelBinder$ManyToOneColumnBinder.doSecondPass(ModelBinder.java:4066)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1696)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1652)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:287)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:904)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:935)
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:57)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:390)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:377)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1758)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1695)

Пожалуйста, дайте мне знать, что мне здесь не хватает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...