Spring Boot-不是托管类型

我使用Spring boot + 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 Implementation,

@Service("userDetailsService")

@SessionAttributes("user")

public class UserDetailsServiceImpl implements UserDetailsService {

@Autowired

private UserService userService;

Service layer implementation,

@Service

public class PhoneSettingsServiceImpl implements PhoneSettingsService {

}

The repository class,

@Repository

@Repository

public interface PhoneSettingsRepository extends JpaRepository<PhoneSettings, Long> {

}

Entity class,

@Entity

@Table(name = "phone_settings", catalog = "dialer")

public class PhoneSettings implements java.io.Serializable {

WebSecurityConfig class,

@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

谢谢

回答:

尝试添加以下所有内容,在我的应用程序中,它与tomcat正常工作

 @EnableJpaRepositories("my.package.base.*")

@ComponentScan(basePackages = { "my.package.base.*" })

@EntityScan("my.package.base.*")

我使用的是Spring Boot,当我使用嵌入式tomcat时,它工作得很好, @EntityScan("my.package.base.*")但是当我尝试将应用程序部署到外部tomcat时not a managed type,我的实体出现错误。

以上是 Spring Boot-不是托管类型 的全部内容, 来源链接: utcz.com/qa/425529.html

回到顶部