В моем проекте я настроил Hibernate 5.6.15.Final с отображением XML HBM для моих классов и указанием того, когда использовать Hibernate Envers для этих классов с помощью аннотации.
В классе (Personne), я добавил @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED) в свой класс, но у меня возникла ошибка в отношении oneToMany, поскольку связанный объект (PersonneHasPersonne) не проверяется.
Вызвано: org.hibernate.MappingException: проверяемое отношение из
com.bsw.directory. dojo.Personne.personneHasPersonnesForIdPersonneDroite
непроверяемому объекту com.bsw.directory.dojo.PersonneHasPersonne!
Я не понимаю, почему не соблюдается RelationTargetAuditMode.NOT_AUDITED. Я пытался добавить к нему @NotAudited, но безрезультатно.
Следующая трассировка стека:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactoryBean' defined in ServletContext resource [/WEB-INF/applicationContext-hibernate.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: An audited relation from com.bsw.directory.dojo.Personne.personneHasPersonnesForIdPersonneDroite to a not audited entity com.bsw.directory.dojo.PersonneHasPersonne!
[INFO] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804)
[INFO] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620)
[INFO] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
[INFO] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
[INFO] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
[INFO] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
[INFO] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
[INFO] at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
[INFO] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391)
[INFO] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311)
[INFO] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.resolveMethodArguments(AutowiredAnnotationBeanPostProcessor.java:816)
[INFO] ... 43 more
[INFO] Caused by: org.hibernate.MappingException: An audited relation from com.bsw.directory.dojo.Personne.personneHasPersonnesForIdPersonneDroite to a not audited entity com.bsw.directory.dojo.PersonneHasPersonne!
[INFO] at org.hibernate.envers.configuration.internal.metadata.AuditMetadataGenerator.getReferencedIdMappingData(AuditMetadataGenerator.java:797)
[INFO] at org.hibernate.envers.configuration.internal.metadata.CollectionMetadataGenerator.addOneToManyAttached(CollectionMetadataGenerator.java:201)
[INFO] at org.hibernate.envers.configuration.internal.metadata.CollectionMetadataGenerator.addCollection(CollectionMetadataGenerator.java:169)
[INFO] at org.hibernate.envers.configuration.internal.metadata.AuditMetadataGenerator.addValueInSecondPass(AuditMetadataGenerator.java:288)
[INFO] at org.hibernate.envers.configuration.internal.metadata.AuditMetadataGenerator.addValue(AuditMetadataGenerator.java:322)
[INFO] at org.hibernate.envers.configuration.internal.metadata.AuditMetadataGenerator.addProperties(AuditMetadataGenerator.java:350)
[INFO] at org.hibernate.envers.configuration.internal.metadata.AuditMetadataGenerator.generateSecondPass(AuditMetadataGenerator.java:720)
[INFO] at org.hibernate.envers.configuration.internal.EntitiesConfigurator.configure(EntitiesConfigurator.java:109)
[INFO] at org.hibernate.envers.boot.internal.EnversServiceImpl.doInitialize(EnversServiceImpl.java:149)
[INFO] at org.hibernate.envers.boot.internal.EnversServiceImpl.initialize(EnversServiceImpl.java:113)
[INFO] at org.hibernate.envers.boot.internal.AdditionalJaxbMappingProducerImpl.produceAdditionalMappings(AdditionalJaxbMappingProducerImpl.java:110)
[INFO] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:306)
[INFO] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:86)
[INFO] at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:479)
[INFO] at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:85)
[INFO] at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:709)
[INFO] at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:746)
[INFO] at org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:616)
[INFO] at org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:600)
[INFO] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863)
[INFO] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800)
[INFO] ... 53 more
Это мой класс Personne:
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
public class Personne extends EObject {
private Integer idPersonne;
....
@NotAudited
private Set personneHasPersonnesForIdPersonneDroite = new HashSet(0);
+ getters/setters ....
Это мое сопоставление классов Personne HBM:
...
...
Это моя конфигурация Spring Hibernate:
Persistance Beans declaration for Hibernate .
DataSource for Mysql with C3P0 Connexion Pool management.
${hibernate.c3p0.initialPoolSize}
${hibernate.c3p0.minPoolSize}
${hibernate.c3p0.maxPoolSize}
${hibernate.c3p0.acquireIncrement}
${hibernate.c3p0.idleConnectionTestPeriod}
${hibernate.c3p0.maxIdleTime}
${hibernate.c3p0.maxConnectionAge}
SessionFactory Bean declaration for dataSource
com/bsw/directory/dojo/PersonneHasPersonne.hbm.xml
com/bsw/directory/dojo/Personne.hbm.xml
....
com.bsw.directory.dojo
${hibernate.dialect}
update
${hibernate.current_session_context_class}
true
_HISTORY
true
${hibernate.c3p0.acquireIncrement}
${hibernate.c3p0.idleConnectionTestPeriod}
${hibernate.c3p0.maxIdleTime}
${hibernate.c3p0.maxPoolSize}
${hibernate.c3p0.minPoolSize}
${hibernate.cache.region.factory_class}
true
true
true
Когда я активирую ведение журнала envers.boot, у меня появляется следующее предупреждение, возможно, в этом проблема:
WARN org.hibernate.boot.registry.classloading.internal.AggregatedServiceLoader - HHH000505: Ignoring ServiceConfigurationError caught while trying to instantiate service 'interface org.hibernate.integrator.spi.Integrator'.
[INFO] java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: org.hibernate.envers.boot.internal.EnversIntegrator not a subtype
[INFO] at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:593)
[INFO] at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1244)
[INFO] at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1273)
[INFO] at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1309)
[INFO] at java.base/java.util.ServiceLoader$ProviderSpliterator.tryAdvance(ServiceLoader.java:1491)
[INFO] at java.base/java.util.Spliterators$1Adapter.hasNext(Spliterators.java:681)
[INFO] at org.hibernate.boot.registry.classloading.internal.AggregatedServiceLoader$ClassPathAndModulePathAggregatedServiceLoader.hasNextIgnoringServiceConfigurationError(AggregatedServiceLoader.java:241)
[INFO] at org.hibernate.boot.registry.classloading.internal.AggregatedServiceLoader$ClassPathAndModulePathAggregatedServiceLoader.loadAll(AggregatedServiceLoader.java:219)
[INFO] at org.hibernate.boot.registry.classloading.internal.AggregatedServiceLoader$ClassPathAndModulePathAggregatedServiceLoader.getAll(AggregatedServiceLoader.java:187)
[INFO] at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.loadJavaServices(ClassLoaderServiceImpl.java:251)
[INFO] at org.hibernate.integrator.internal.IntegratorServiceImpl.(IntegratorServiceImpl.java:40)
[INFO] at org.hibernate.boot.registry.BootstrapServiceRegistryBuilder.build(BootstrapServiceRegistryBuilder.java:224)
[INFO] at org.springframework.orm.hibernate5.LocalSessionFactoryBean.getMetadataSources(LocalSessionFactoryBean.java:443)
[INFO] at org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:496)
Подробнее здесь: https://stackoverflow.com/questions/792 ... annotation
Hibernate Envers 5.6.15 отображение hbm ORM + аннотация envers ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение