2016-05-28 4 views
2

私はSpring JPAの問題に直面しています。私はNO XMLでjava設定を行っています。Spring JPA java.lang.IllegalStateException:{classpath *:META-INF/persistence.xml}から解析された永続ユニットがありません

私は "java.lang.IllegalStateException:から解析されない永続性ユニット{クラスパス*:META-INF/persistence.xmlの}" 取得しています以下は

は自分のアプリケーションの設定クラスです。

package co.in.desertlamp.configuration; 

import java.util.Properties; 

import javax.annotation.Resource; 
import javax.sql.DataSource; 

import org.hibernate.SessionFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Conditional; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.PropertySource; 
import org.springframework.core.env.Environment; 
import org.springframework.core.io.ClassPathResource; 
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; 
import org.springframework.jdbc.datasource.DriverManagerDataSource; 
import org.springframework.jdbc.datasource.init.DataSourceInitializer; 
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; 
import org.springframework.orm.hibernate4.HibernateTransactionManager; 
import org.springframework.orm.hibernate4.LocalSessionFactoryBean; 
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; 
import org.springframework.transaction.annotation.EnableTransactionManagement; 

@Configuration 
@EnableTransactionManagement 
@EnableJpaRepositories(basePackages = "co.in.desertlamp") 
@ComponentScan({ "co.in.desertlamp" }) 
@PropertySource(value = { "classpath:/co/in/desertlamp/resources/desertlamp.properties" }) 
public class DesertLampApplicationConfig { 

    private static final String DATABASE_DRIVER = "db.driver"; 
    private static final String DATABASE_URL = "db.url"; 
    private static final String DATABASE_USERNAME = "db.username"; 
    private static final String DATABASE_PASSWORD = "db.password"; 

    private static final String HIBERNATE_DIALECT = "hibernate.dialect"; 
    private static final String HIBERNATE_SHOWSQL = "hibernate.show_sql"; 
    private static final String HIBERNATE_FORMATSQL = "hibernate.format_sql"; 
    private static final String HIBERNATE_HBM2DDL = "hibernate.hbm2ddl.auto"; 

    @Resource 
    private Environment environment; 

    @Bean 
    public LocalSessionFactoryBean sessionFactory() { 
     LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); 
     sessionFactory.setDataSource(dataSource()); 
     sessionFactory.setPackagesToScan(new String[] { "co.in.desertlamp" }); 
     sessionFactory.setHibernateProperties(hibernateProperties()); 
     return sessionFactory; 
    } 

    @Bean 
    public DataSource dataSource() { 
     DriverManagerDataSource dataSource = new DriverManagerDataSource(); 
     dataSource.setDriverClassName(environment.getRequiredProperty(DATABASE_DRIVER)); 
     dataSource.setUrl(environment.getRequiredProperty(DATABASE_URL)); 
     dataSource.setUsername(environment.getRequiredProperty(DATABASE_USERNAME)); 
     dataSource.setPassword(environment.getRequiredProperty(DATABASE_PASSWORD)); 
     return dataSource; 
    } 

    @Bean 
    @Conditional(DataSourceCondition.class) 
    public DataSourceInitializer dataSourceInitializer(DataSource dataSource) { 
     ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator(); 
     //Put Logger here 
     resourceDatabasePopulator.addScript(new ClassPathResource("/co/in/desertlamp/scripts/loadUserAndRoleData.sql")); 
     DataSourceInitializer dataSourceInitializer = new DataSourceInitializer(); 
     dataSourceInitializer.setDataSource(dataSource); 
     dataSourceInitializer.setDatabasePopulator(resourceDatabasePopulator); 
     return dataSourceInitializer; 
    } 

    private Properties hibernateProperties() { 
     Properties hibernateProperties = new Properties(); 
     hibernateProperties.put(HIBERNATE_DIALECT, environment.getRequiredProperty(HIBERNATE_DIALECT)); 
     hibernateProperties.put(HIBERNATE_SHOWSQL, environment.getRequiredProperty(HIBERNATE_SHOWSQL)); 
     hibernateProperties.put(HIBERNATE_FORMATSQL, environment.getRequiredProperty(HIBERNATE_FORMATSQL)); 
     hibernateProperties.put(HIBERNATE_HBM2DDL, environment.getRequiredProperty(HIBERNATE_HBM2DDL)); 
     return hibernateProperties;   
    } 

    @Bean 
    @Autowired 
    public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) { 
     HibernateTransactionManager hibernateTransactionManager = new HibernateTransactionManager(); 
     hibernateTransactionManager.setSessionFactory(sessionFactory); 
     return hibernateTransactionManager; 
    } 

    @Bean 
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(){ 
     LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean(); 
     localContainerEntityManagerFactoryBean.setDataSource(dataSource()); 
     return localContainerEntityManagerFactoryBean; 
    } 
} 

ありがとうございます。

+0

を可能複製を質問/ 11651919/no-persistence-units-parsed-from-classpathmeta-inf-persistence-xml) – Arpit

答えて

6

LocalContainerEntityManagerFactoryBeanは、@Entityクラスの場所を知る必要があります。

だから特性の下にそれを修正する必要が追加:http://stackoverflow.com/([{META-INF/persistence.xmlのクラスパス\ *}から解析なし永続ユニット]の

localContainerEntityManagerFactoryBean.setPackagesToScan("path.to.your.entities"); 
localContainerEntityManagerFactoryBean.setPersistenceUnitName("name"); 
関連する問題