2016-06-23 8 views
1

Ich versuche, eine Annotation basierend Hibernate-Konfiguration zu arbeiten.Spring + Hibernate: Unbekannte Einheit

applicationContext.xml

<!-- ============================= --> 
<!-- DATASOURCE     --> 
<!-- ============================= --> 
<bean name="logDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="${logs.ds.jndi.name}"/> 
</bean> 

<!-- ============================= --> 
<!-- SESSION FACTORY    --> 
<!-- ============================= --> 
<bean id="logSessionFactory" 
     class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> 
    <property name="packagesToScan" value="com.example.logs.persistence.entity"/> 
    <property name="dataSource" ref="logDataSource"/> 
    <property name="hibernateProperties"> 
     <props> 
      <!-- dialect --> 
      <prop key="hibernate.dialect">${logs.ds.dialect}</prop> 
      <prop key="hibernate.connection.useUnicode">true</prop> 
      <prop key="hibernate.connection.charSet">UTF-8</prop> 

      <!-- schema --> 
      <prop key="hibernate.default_schema">${logs.ds.default_schema}</prop> 

      <!-- logging debug information --> 
      <prop key="hibernate.show_sql">${logs.ds.debug}</prop> 
      <prop key="hibernate.format_sql">${logs.ds.debug}</prop> 
      <prop key="hibernate.generate_statistics">${logs.ds.debug}</prop> 
      <prop key="hibernate.use_sql_comments">${logs.ds.debug}</prop> 

      <prop key="configurationClass">org.hibernate.cfg.AnnotationConfiguration</prop> 
     </props> 
    </property> 
</bean> 

<bean id="logTransactionManager" 
     class="org.springframework.orm.hibernate5.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="logSessionFactory"/> 
</bean> 

LogsConfiguration.java

package com.example.logs.persistence.entity; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table(name = "logs_configuration") 
public class LogsConfiguration { 
    // ... 
} 

Das Problem ist, wenn ich versuche, eine LogsConfiguration mit meinem DAO zu speichern, erhalte ich diese Fehlermeldung:

Caused by: org.hibernate.MappingException: Unknown entity: com.example.logs.persistence.entity.LogsConfiguration 
at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:776) 
at org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1533) 
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:104) 
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192) 
at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38) 
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177) 
at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32) 
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73) 
at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:682) 
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:674) 
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:669) 
at com.example.logs.persistence.dao.impl.AbstractDaoImpl.create(AbstractDaoImpl.java:125) 

Wo bin ich falsch gelaufen? Alles scheint in Ordnung zu mir (ich bin mit den javax.persistence Anmerkungen)

+0

Verwenden Sie Hibernate 5? –

+0

@ v.ladynev ja Ich benutze Hibernate '5.1.0.Final' – Kawada

Antwort

0

ich die Lösung gefunden. Meine Anwendung ist ein Filter und das Problem war, dass ich zwei Sitzungsfabriken hatte.

Mein DAO hat das falsche Auto automatisch gestartet. Um das zu beheben, fügte ich einen @Qualifier hinzu, um den guten zu bekommen. So

I ersetzt, dass

@Autowired 
protected SessionFactory sessionFactory; 

mit diesem

@Autowired 
@Qualifier("logSessionFactory") 
protected SessionFactory sessionFactory; 
0

Statt org.springframework.orm.hibernate5.LocalSessionFactoryBean Verwendung org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean

Ihr Eintrag geändert werden würde wie folgt:

<bean id="logSessionFactory" 
     class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="packagesToScan" value="com.example.logs.persistence.entity"/> 
    <property name="dataSource" ref="logDataSource"/> 
    <property name="hibernateProperties"> 
     ... 
    </property> 
</bean>