java - Hibernate Java 配置 Spring Boot
问题描述
您好我正在尝试从 application.properties 为休眠进行 Java 配置,但代码执行给出以下错误。我收到映射错误,但我检查了我的映射是否正确。它说创建sessionFactory bean 时没有 id。我试图纠正,但我无法请帮助。
这是我的 DBConfig 文件:
@Configuration
@EnableTransactionManagement
@PropertySource(value = {"classpath:application.properties"})
public class DBConfig {
@Value("${spring.datasource.driver-class-name}")
public String driver;
@Value("${spring.datasource.url}")
public String url;
@Value("${spring.datasource.username}")
public String username;
@Value("${spring.datasource.password}")
public String password;
@Value("${spring.jpa.properties.hibernate.dialect}")
public String dialect;
@Value("${spring.jpa.hibernate.ddl-auto}")
public String ddl;
@Bean(name = "dataSource")
public DriverManagerDataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
@Bean(name = "sessionFactory")
public LocalSessionFactoryBean hibernateSessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan(new String[] { "com.abc.model" });
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
//Hibernate Transaction
@Bean
HibernateTransactionManager transactionManager() {
HibernateTransactionManager transactionManager = new HibernateTransactionManager();
transactionManager.setSessionFactory((SessionFactory) hibernateSessionFactory());
return transactionManager;
}
@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}
Properties hibernateProperties() {
return new Properties() {
{
setProperty("hibernate.hbm2ddl.auto",ddl);
setProperty("hibernate.connection.useUnicode","true");
setProperty("spring.jpa.hibernate.ddl-auto",ddl);
setProperty("hibernate.dialect", dialect);
setProperty("spring.jpa.properties.hibernate.dialect",dialect);
setProperty("hibernate.globally_quoted_identifiers", "true");
setProperty("hibernate.connection.CharSet", "utf8mb4");
setProperty("hibernate.connection.characterEncoding", "utf8");
}
};
}
}
当我尝试运行它时,我收到此错误:
Caused by: org.hibernate.MappingException: component property not found: id
at org.hibernate.mapping.Component.getProperty(Component.java:335) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
at org.hibernate.cfg.AnnotationBinder.fillComponent(AnnotationBinder.java:2779) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
at org.hibernate.cfg.AnnotationBinder.fillComponent(AnnotationBinder.java:2620) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
at org.hibernate.cfg.AnnotationBinder.bindComponent(AnnotationBinder.java:2568) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:2197) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:972) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:799) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:250) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:231) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:274) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:84) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:474) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:85) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:689) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724) ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]
at org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:511) ~[spring-orm-4.3.14.RELEASE.jar:4.3.14.RELEASE]
at org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:495) ~[spring-orm-4.3.14.RELEASE.jar:4.3.14.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) ~[spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) ~[spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
... 32 common frames omitted
解决方案
推荐阅读
- python - 当有更多任务时,许多分布式 dask 工作人员在一次评估后闲置,或者从未收到任何工作
- c - 如何在 Windows 中为 Python 3.7 编译 C 扩展
- ubuntu-18.04 - 如何解决“erpnext”权限拒绝错误?
- asp.net-core - WebSocket 未处于 OPEN 状态
- wordpress - WordPress:3秒后重定向到页面
- oracle - 如何在程序中在 AS 之后放置 2 个条件
- php - 如何在使用正则表达式提交之前检查文本框的输入日期以进行格式设置?
- c# - Web Api端如何接收上传的文件和一些multipart/form-data参数?
- c# - 为什么 SqlException 类型的异常没有被 try/catch SqlException 捕获?
- python - 如何保持 PyQT diaglog incase 输入无效(导致代码错误)