[SPRING] 스프링 부트 - 관리 형이 아님
SPRING스프링 부트 - 관리 형이 아님
나는 스프링 부트 + JPA를 사용하고 서비스를 시작하는 동안 문제가있다.
Caused by: java.lang.IllegalArgumentException: Not an managed type: class com.nervytech.dialer.domain.PhoneSettings
at org.hibernate.jpa.internal.metamodel.MetamodelImpl.managedType(MetamodelImpl.java:219)
at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.<init>(JpaMetamodelEntityInformation.java:68)
at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getMetadata(JpaEntityInformationSupport.java:65)
at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:145)
at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:89)
at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:69)
at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:177)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:239)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:225)
at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1625)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562)
다음은 Application.java 파일입니다.
@Configuration
@ComponentScan
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class })
@SpringBootApplication
public class DialerApplication {
public static void main(String[] args) {
SpringApplication.run(DialerApplication.class, args);
}
}
연결 풀링에 UCp를 사용하고 DataSource 구성이 아래에 있습니다.
@Configuration
@ComponentScan
@EnableTransactionManagement
@EnableAutoConfiguration
@EnableJpaRepositories(entityManagerFactoryRef = "dialerEntityManagerFactory", transactionManagerRef = "dialerTransactionManager", basePackages = { "com.nervy.dialer.spring.jpa.repository" })
public class ApplicationDataSource {
/** The Constant LOGGER. */
private static final Logger LOGGER = LoggerFactory
.getLogger(ApplicationDataSource.class);
/** The Constant TEST_SQL. */
private static final String TEST_SQL = "select 1 from dual";
/** The pooled data source. */
private PoolDataSource pooledDataSource;
UserDetailsService 구현,
@Service("userDetailsService")
@SessionAttributes("user")
public class UserDetailsServiceImpl implements UserDetailsService {
@Autowired
private UserService userService;
서비스 계층 구현,
@Service
public class PhoneSettingsServiceImpl implements PhoneSettingsService {
}
저장소 클래스,
@Repository
public interface PhoneSettingsRepository extends JpaRepository<PhoneSettings, Long> {
}
엔티티 클래스,
@Entity
@Table(name = "phone_settings", catalog = "dialer")
public class PhoneSettings implements java.io.Serializable {
WebSecurityConfig 클래스,
@Configuration
@EnableWebMvcSecurity
@ComponentScan
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsServiceImpl userDetailsService;
/**
* Instantiates a new web security config.
*/
public WebSecurityConfig() {
super();
}
/**
* {@inheritDoc}
* @see org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter#configure(org.springframework.security.config.annotation.web.builders.HttpSecurity)
*/
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/login", "/logoffUser", "/sessionExpired", "/error", "/unauth", "/redirect", "*support*").permitAll()
.anyRequest().authenticated().and().rememberMe().and().httpBasic()
.and()
.csrf()
.disable().logout().deleteCookies("JSESSIONID").logoutSuccessUrl("/logoff").invalidateHttpSession(true);
}
@Autowired
public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder());
}
}
패키지는 다음과 같습니다.
1) Application class is in - com.nervy.dialer
2) Datasource class is in - com.nervy.dialer.common
3) Entity classes are in - com.nervy.dialer.domain
4) Service classes are in - com.nervy.dialer.domain.service.impl
5) Controllers are in - com.nervy.dialer.spring.controller
6) Repository classes are in - com.nervy.dialer.spring.jpa.repository
7) WebSecurityConfig is in - com.nervy.dialer.spring.security
감사
해결법
-
==============================
1.@ComponentScan ( "com.nervy.dialer.domain")으로 @ComponentScan을 대체하면 효과가 있습니다.
@ComponentScan ( "com.nervy.dialer.domain")으로 @ComponentScan을 대체하면 효과가 있습니다.
편집하다 :
BoneCP와 풀링 된 데이터 소스 연결을 설정하는 방법을 보여주기 위해 샘플 애플리케이션을 추가했습니다.
응용 프로그램은 귀하와 동일한 구조를가집니다. 이 방법으로 구성 문제를 해결하는 데 도움이되기를 바랍니다.
-
==============================
2.Spring Boot 엔트리 포인트 클래스에서 @EntityScan을 사용하여 엔티티의 위치를 구성하십시오.
Spring Boot 엔트리 포인트 클래스에서 @EntityScan을 사용하여 엔티티의 위치를 구성하십시오.
2016 년 9 월 업데이트 : Spring Boot 1.4+ 이상 : org.springframework.boot.autoconfigure.domain.EntityScan을 사용하십시오. org.springframework.boot.orm.jpa.EntityScan 대신, ... boot.orm.jpa.EntityScan은 스프링 부트 1.4에서 사용되지 않습니다.
-
==============================
3.다음을 모두 추가해보십시오. 내 응용 프로그램에서 바람둥이로 잘 작동합니다.
다음을 모두 추가해보십시오. 내 응용 프로그램에서 바람둥이로 잘 작동합니다.
@EnableJpaRepositories("my.package.base.*") @ComponentScan(basePackages = { "my.package.base.*" }) @EntityScan("my.package.base.*")
나는 봄 부팅을 사용하고 있는데, 내장 된 바람둥이를 사용할 때 @EntityScan ( "my.package.base. *")을 사용하여 잘 작동하지만 외부 바람둥이에 앱을 전개하려고했을 때 관리 유형이 없다. 내 엔티티에 대한 오류.
-
==============================
4.내 경우 엔 문제는 @ javax.persistence.Entity annotation을 사용하여 Entity 클래스에 주석을다는 것을 잊었 기 때문입니다. 도!
내 경우 엔 문제는 @ javax.persistence.Entity annotation을 사용하여 Entity 클래스에 주석을다는 것을 잊었 기 때문입니다. 도!
//The class reported as "not a amanaged type" @javax.persistence.Entity public class MyEntityClass extends my.base.EntityClass { .... }
-
==============================
5.@EntityScan 어노테이션을 사용하고 엔티티 패키지를 제공하여 모든 jpa 엔티티를 검색 할 수 있습니다. @SpringBootApplication 주석을 사용한 기본 응용 프로그램 클래스에서이 주석을 사용할 수 있습니다.
@EntityScan 어노테이션을 사용하고 엔티티 패키지를 제공하여 모든 jpa 엔티티를 검색 할 수 있습니다. @SpringBootApplication 주석을 사용한 기본 응용 프로그램 클래스에서이 주석을 사용할 수 있습니다.
예 : @EntityScan ( "com.test.springboot.demo.entity")
-
==============================
6.클래스 정의에서 @Entity가 누락되었거나 명시 적 구성 요소 스캔 경로가 있고이 경로에 클래스가 들어 있지 않습니다.
클래스 정의에서 @Entity가 누락되었거나 명시 적 구성 요소 스캔 경로가 있고이 경로에 클래스가 들어 있지 않습니다.
-
==============================
7.추가하는 것을 잊지 마라. @실재 도메인 클래스
추가하는 것을 잊지 마라. @실재 도메인 클래스
-
==============================
8.나는 버전 스프링 부트 v1.3.x에서 같은 문제가있다. 내가 한 것은 스프링 부트를 버전 1.5.7로 업그레이드하는 것입니다. 그런 다음 문제가 사라졌습니다.
나는 버전 스프링 부트 v1.3.x에서 같은 문제가있다. 내가 한 것은 스프링 부트를 버전 1.5.7로 업그레이드하는 것입니다. 그런 다음 문제가 사라졌습니다.
-
==============================
9.스프링 부트 2.0을 사용 중이고 @ComponentScan을 @EntityScan으로 대체하여이 문제를 해결했습니다.
스프링 부트 2.0을 사용 중이고 @ComponentScan을 @EntityScan으로 대체하여이 문제를 해결했습니다.
-
==============================
10.orm.xml 파일의 모든 엔티티를 매핑하지 않았기 때문에이 문제가 발생했습니다.
orm.xml 파일의 모든 엔티티를 매핑하지 않았기 때문에이 문제가 발생했습니다.
from https://stackoverflow.com/questions/28664064/spring-boot-not-an-managed-type by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] @ 거래를 할 곳은 어디입니까? 인터페이스 사양 또는 구현에서? (0) | 2018.12.22 |
---|---|
[SPRING] 기능별 접근 방식은 좋은 방법입니까? [닫은] (0) | 2018.12.22 |
[SPRING] 스레드 내의 범위가 지정된 프록시 bean에 액세스 (0) | 2018.12.22 |
[SPRING] Spring 3에서 최대 절전 모드 세션을 삽입하는 가장 좋은 방법 (0) | 2018.12.22 |
[SPRING] Spring DispatcherServlet을 사용하는 Custom 404 (0) | 2018.12.22 |