2014-11-07 5 views
1

웹 응용 프로그램을 빌드하는 데 JPA/Hibernate를 사용하고 있습니다. 나는 LocalContainerEntityManagerFactoryBean<property name="packagesToScan" value="<pkg>" />을 사용하여 자바 패키지에서 내 엔터티를 만들고 jdbc.datasource.DriverManagerDataSource을 PostgreSQL 용으로 구성 했으므로 정의 된 지속성 컨텍스트가 없습니다.EntityManager가 공장에서 주입되지 않았습니다.

스프링 주석 또는 xml을 사용하여 EntityManager을 이러한 제약 조건으로 구축 할 수 있습니까?

EDIT : 다음 양식의 코드를 사용하여 로그인 할 사용자 데이터를 얻고 있습니다. Spring Security 컨텍스트에서 EntityManager은 항상 null입니다.

@Repository 
public class UserDao implements UserDetailsService { 
    @PersistenceContext 
    private EntityManager entityManager; // With getter and setter 

    public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException { 
     // Used by spring-security, here entityManager is null 
    } 

} 

EDIT2 : 추가 컨텍스트 구성

<context:spring-configured /> 
<context:annotation-config /> 
<context:component-scan base-package="<BasePackage>" /> 

EDIT3 : 추가 엔티티 관리자 팩토리의 설정 : 보안 인증 콩에

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="persistenceUnitName" value="default_unit" /> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="persistenceProviderClass" value="org.hibernate.ejb.HibernatePersistence"></property> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
      <property name="showSql" value="true" /> 
      <property name="databasePlatform" value="org.hibernate.dialect.PostgreSQLDialect" /> 
     </bean> 
    </property> 
    <property name="packagesToScan" value="<package>" /> 
    <property name="jpaProperties"> 
     <value> 
      hibernate.show_sql=true 
      hibernate.format_sql=true 
      hibernate.hbm2ddl.auto=create-drop 
      hibernate.hbm2ddl.import_files=/loaded-on-startup/import.sql 
      <!-- ALSO CHECK IMPORT.SQL --> 
     </value> 
    </property> 
</bean> 

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    /// CONNECTION CONFIG /// 
</bean> 
나는 또한 내 beans 태그에 default-autowire="byType"을 추가 한

autowire="byType" 정의.

+0

을 available.Read? – Rohit

+0

나는 그것을하지 않는다. 스프링 보안은 인증 제공자가된다. (그래서 나는 UserDetailsService를 구현한다.) –

+0

삽입되어 있지 않으면 entitymanagerfactory가있는 컨텍스트에 없으며'context : annotation-config' 또는'context : component-scan'을 가지고 있지 않습니다. 만약 당신이 의존성을 찾을 수 없습니다 시작하는 동안 예외가 있었을 것입니다. –

답변

1

예. 보세요 here. 당신은 없기 때문에 거래의 LocalContainerEntityManagerFactoryBean 콩에게

편집

이있을 수 있습니다를 데이터 소스를 제공하고 사용할 필요는 당신이`loadUserByUsername` 메소드를 호출 어떻게 here

+0

나는 그것을 할 수 없다. 위의 몇 가지 세부 사항을 추가했다. 더 많은 것을 원하면 나에게 그것을 가르쳐주세요. –

+0

application context.xml을 공유 할 수 있습니까? – Rohit

+0

컨텍스트 구성을 추가했습니다. –

관련 문제