2017-04-13 2 views
1

habe ich eine Einheit WurzelMapping Muti-Ebene eingebettet Sammlung gibt Ausnahme

@Entity 
public class Root { 
    @Id 
    String id; 

    @ElementCollection 
    @CollectionTable 
    List<Col> cols ; 

The Collection Item 'Col' hat ein eingebettetes Objekt selbst

@Embeddable 
public class Col { 

    @Embedded 
    private Emb emb; 

Das Objekt 'Emb' ist ganz einfach

@Embeddable 
public class Emb { 

    String embField; 

würde ich die Datenbanktabellen erwarten, wie die

sein

Tabelle: ROOT Felder: ID

Tabelle: ROOT_COLS Fields: ROOT_ID, EMB_FIELD

Ab diesem Frühjahr Boot-Anwendung gibt mir eine ArrayIndexOutOfBoundsException

Wie kann ich dieses Problem beheben?

Hibernate Version: 5.0.12

org.springframework.beans.factory.BeanCreationException: Fehler in Klassenpfad Ressource Bean mit dem Namen 'EntityManagerFactory' definiert die Schaffung [org/spring/boot/autoconfigure/ORM/JPA/HibernateJpaAutoConfiguration.class]: Aufruf der Init-Methode fehlgeschlagen; verschachtelte Ausnahme ist javax.persistence.PersistenceException: [PersistenceUnit: default] Konnte Hibernate SessionFactory nicht erstellen at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1628) ~ [spring-bohnen-4.3.7 .RELEASE.jar: 4.3.7.RELEASE] bei org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:555) ~ [spring-bohnen-4.3.7.RELEASE.jar: 4.3.7 .RELEASE] bei org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:483) ~ [spring-bohnen-4.3.7.RELEASE.jar: 4.3.7.RELEASE] bei org.springframework .beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java306) ~ [Quelle-Bohnen-4.3.7.RELEASE.jar: 4.3.7.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:230) ~ [spring-bohnen-4.3.7.RELEASE.jar: 4.3.7.RELEASE] bei org.springframework.beans. factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java302) ~ [spring-bohnen-4.3.7.RELEASE.jar: 4.3.7.RELEASE] bei org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:197) ~ [spring-beans-4.3.7.RELEASE.jar: 4.3.7.RELEASE] unter org.springframework.context.support.AbstractApplicationContext.getBean (AbstractApplicationContext.java:1081) ~ [spring- context-4.3.7.RELEASE.jar: 4.3.7.RELEASE] unter org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:856) ~ [spring-context-4.3.7.RELEASE.jar: 4.3.7.RELEASE] bei org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:542) ~ [spring-context-4.3.7.RELEASE.jar: 4.3.7.RELEASE] unter org.springframework.boot.context.embedded. EmbeddedWebApplicationContext.refresh (EmbeddedWebApplicationContext.java:122) ~ [Spring-Boot-1.5.2.RELEASE.jar: 1.5.2.RELEASE] bei org.springframework.boot.SpringApplication.refresh (SpringApplication.java:737) [Frühling -boot-1.5.2.RELEASE.jar: 1.5.2.RELEASE] unter org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:370) [spring-boot-1.5.2.RELEASE.jar: 1.5. 2.RELEASE] unter org.springframework.boot.SpringApplication.run (SpringApplication.java: 314) [spring-boot-1.5.2.RELEASE.jar: 1.5.2.RELEASE] unter org.springframework.boot.SpringApplication.run (SpringApplication.java:1162) [spring-boot-1.5.2. RELEASE.jar: 1.5.2.RELEASE] bei org.springframework.boot.SpringApplication.run (SpringApplication.java:1151) [Spring-boot-1.5.2.RELEASE.jar: 1.5.2.RELEASE] bei ch .admin.estv.map.Application.main (Application.java:33) [classes /: na] Verursacht von: javax.persistence.PersistenceException: [PersistenceUnit: default] Es konnte keine Hibernate SessionFactory unter org.hibernate.jpa erstellt werden .boot.internal.EntityManagerFactoryBuilderImpl.persistenceException (EntityManagerFactoryBuilderImpl.java:954) ~ [hibernate-entitymanager-5.0.12.Final.jar: 5.0.12.Final] bei org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build (EntityManagerFactoryBuilderImpl.java:882) ~ [h ibernate-entitymanager-5.0.12.Final.jar: 5.0.12.Final] unter org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory (SpringHibernateJpaPersistenceProvider.java:60) ~ [spring-orm-4.3.7. RELEASE.jar: 4.3.7.RELEASE] unter org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory (LocalContainerEntityManagerFactoryBean.java:353) ~ [spring-orm-4.3.7.RELEASE.jar: 4.3.7.RELEASE] bei org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory (AbstractEntityManagerFactoryBean.java: 370) ~ [Frühling-orm-4.3.7.RELEASE.jar: 4.3.7.RELEASE] bei org.springframework.orm.jpa. AbstractEntityManagerFactoryBean.afterPropertiesSet (AbstractEntityManagerFactoryBean.java:359) ~ [Frühling-orm-4.3.7.RELEASE.jar: 4.3.7.RELEASE] bei org.springframewor k.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1687) ~ [spring-bohnen-4.3.7.RELEASE.jar: 4.3.7.RELEASE] unter org.springframework.beans.factory.support. AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1624) ~ [spring-bohnen-4.3.7.RELEASE.jar: 4.3.7.RELEASE] ... 16 allgemeine Frames weggelassen verursacht durch: org.hibernate.MappingException: Konnte nicht instanziate sammlung persister org.hibernate.persister.collection.BasicCollectionPersister bei org.hibernate.persister.internal.PersisterFactoryImpl.createCollectionPersister (PersisterFactoryImpl.java:167) ~ [Hibernate-Core-5.0.12.Final.jar: 5.0.12. Abschließend] bei org.hibernate.persister.internal.PersisterFactoryImpl.createCollectionPersister (PersisterFactoryImpl.java:140) ~ [hibernate-core-5.0.12.F inal.jar: 5.0.12.Final] bei org.hibernate.internal.SessionFactoryImpl. (SessionFactoryImpl.java:399) ~ [Hibernate-Core-5.0.12.Final.jar: 5.0.12.Final] bei org .hibernate.boot.internal.SessionFactoryBuilderImpl.build (SessionFactoryBuilderImpl.java:444) ~ [Hibernate-Core-5.0.12.Final.jar: 5.0.12.Final] bei org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl .build (EntityManagerFactoryBuilderImpl.java:879) ~ [hibernate-entitymanager-5.0.12.Final.jar: 5.0.12.Final] ... 22 allgemeine Frames weggelassen Verursacht von: java.lang.ArrayIndexOutOfBoundsException: 1 um org.hibernate.persister.collection.AbstractCollectionPersister.initCollectionPropertyMap (AbstractCollectionPersister.java:1914) ~ [Hibernate-Core-5.0.12.Final.jar: 5.0.12.Final] bei org.hibernate.persister.collection.Abst ractCollectionPersister.initCollectionPropertyMap (AbstractCollectionPersister.java:1891) ~ [hibernate-core-5.0.12.Final.jar: 5.0.12.Final] bei org.hibernate.persister.collection.AbstractCollectionPersister. (AbstractCollectionPersister.java:592) ~ [hibernate-core-5.0.12.Final.jar: 5.0.12.Final] bei org.hibernate.persister.collection.BasicCollectionPersister. (BasicCollectionPersister.java:57) ~ [hibernate-core-5.0.12.Final. jar: 5.0.12.Final] bei sun.reflect.NativeConstructorAccessorImpl.newInstance0 (systemeigene Methode) ~ [na: 1.8.0_121] bei sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62) ~ [na: 1.8 .0_121] bei sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) ~ [na: 1.8.0_121] bei java.lang.reflect.Constructor.newInstance (Konstruktor.java:423) ~ [na: 1.8.0_121] bei org.hibernate.persister.internal.PersisterFactoryImpl.createCollectionPersister (PersisterFactoryImpl.java:152) ~ [Hibernate-Core-5.0.12.Final.jar: 5.0.12.Final] ... 26 allgemeine Rahmen weggelassen

Antwort

2

Das Problem ist, dass der Standardzugriff für Entitäten Feld ist, aber für eingebettete Objekte ist der Standardzugriff Eigenschaft.

So sollte der Col Klasse

@Embeddable 
@Access(AccessType.FIELD) 
public class Col { 
    @Embedded 
    private Emb emb; 

und die Emb Klasse

@Embeddable 
@Access(AccessType.FIELD) 
public class Emb { 
    String embField; 

Ich würde eine bessere Fehlermeldung dann eine ArrayIndexOutOfBoundsException geliebt haben!

+0

In meinem Fall war nicht klar, welche Embeddable-Klasse das Problem war. Ich habe schließlich die @Access-Annotation auf alle eingebetteten Klassen angewendet, um das Problem zu beheben. –

Verwandte Themen