웹 응용 프로그램을 빌드하는 데 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"
정의.
을 available.Read? – Rohit
나는 그것을하지 않는다. 스프링 보안은 인증 제공자가된다. (그래서 나는 UserDetailsService를 구현한다.) –
삽입되어 있지 않으면 entitymanagerfactory가있는 컨텍스트에 없으며'context : annotation-config' 또는'context : component-scan'을 가지고 있지 않습니다. 만약 당신이 의존성을 찾을 수 없습니다 시작하는 동안 예외가 있었을 것입니다. –