- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试运行一个通过 spring-jpa 使用 hibernate 的 spring-boot 应用程序,但出现此错误:
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:104)
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:71)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:205)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206)
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:843)
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:842)
at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:152)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:336)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1613)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1550)
... 21 more
我的 pom.xml 文件是这样的:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.8.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
</dependency>
</dependencies>
我的 hibernate 配置是(方言配置在这个类的最后一个方法中):
@Configuration
@EnableTransactionManagement
@ComponentScan({ "com.spring.app" })
public class HibernateConfig {
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(restDataSource());
sessionFactory.setPackagesToScan(new String[] { "com.spring.app.model" });
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
@Bean
public DataSource restDataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("org.postgresql.Driver");
dataSource.setUrl("jdbc:postgresql://localhost:5432/teste?charSet=LATIN1");
dataSource.setUsername("klebermo");
dataSource.setPassword("123");
return dataSource;
}
@Bean
@Autowired
public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) {
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(sessionFactory);
return txManager;
}
@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}
Properties hibernateProperties() {
return new Properties() {
/**
*
*/
private static final long serialVersionUID = 1L;
{
setProperty("hibernate.hbm2ddl.auto", "create");
setProperty("hibernate.show_sql", "false");
setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
}
};
}
}
我做错了什么?
最佳答案
首先删除所有配置,Spring Boot 将为您启动它。
确保您的类路径中有一个 application.properties
并添加以下属性。
spring.datasource.url=jdbc:postgresql://localhost:5432/teste?charSet=LATIN1
spring.datasource.username=klebermo
spring.datasource.password=123
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=create
如果您确实需要访问 SessionFactory
并且基本上是针对相同的数据源,那么您可以执行以下操作(也记录在案 here 虽然是针对 XML,而不是 JavaConfig)。
@Configuration
public class HibernateConfig {
@Bean
public HibernateJpaSessionFactoryBean sessionFactory(EntityManagerFactory emf) {
HibernateJpaSessionFactoryBean factory = new HibernateJpaSessionFactoryBean();
factory.setEntityManagerFactory(emf);
return factory;
}
}
这样你就有了一个 EntityManagerFactory
和一个 SessionFactory
。
更新:从 Hibernate 5 开始,SessionFactory
实际上扩展了 EntityManagerFactory
。因此,要获得 SessionFactory
,您可以简单地将 EntityManagerFactory
转换为它或使用 unwrap
方法来获得一个。
public class SomeHibernateRepository {
@PersistenceUnit
private EntityManagerFactory emf;
protected SessionFactory getSessionFactory() {
return emf.unwrap(SessionFactory.class);
}
}
假设您有一个带有 main
方法和 @EnableAutoConfiguration
的类,您不需要 @EnableTransactionManagement
注释,因为那将是由 Spring Boot 为您启用。 com.spring.app
包中的一个基本应用程序类就足够了。
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
类似的东西应该足以检测到您的所有类(包括实体和基于 Spring Data 的存储库)。
更新:在较新版本的 Spring Boot 中,这些注释可以替换为单个 @SpringBootApplication
。
@SpringBootApplication
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
我还建议删除 commons-dbcp
依赖项,因为这将允许 Spring Boot 配置更快、更健壮的 HikariCP
实现。
关于java - 组织.hibernate.HibernateException : Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27121831/
我确实将 Hibernate 4 替换为 Hibernate 5,现在面临连接元数据的问题。代码片段是: public long getNext(final String sequenceName)
作为开发人员我想开发一个 Spring JPA 来访问 Oracle 9i 数据库以通过存储过程获取记录我想通过 application.yml 连接到数据库,但我使用配置文件 application
我正在与几个人一起开展一个学校项目。当我运行我的项目时,我收到一堆错误,这些错误似乎是由这个引起的:当未设置“hibernate.dialect”时,对 DialectResolutionInfo 的
我知道这是一个常见问题,但没有一个可用的解决方案适合我。下面是我的 booltstraps.xml: Simple bean to handle initializati
Spring 4.3.4 hibernate 5.1.15作为从 3 到 5.1.15 的 hibernate 的一部分,我遇到了这个错误。 正常的应用程序启动可以工作,但如果我使用相同的设置运行 D
我正在使用 java-play-spring 模板(可在此处获取: https://github.com/jamesward/play-java-spring#master ),目前我正在尝试从默认的
使用 maven 创建 Hibernate 测试项目。 当我运行项目时,它生成异常: org.hibernate.engine.jdbc.connections.internal.Connection
我正在尝试运行一个通过 spring-jpa 使用 hibernate 的 spring-boot 应用程序,但出现此错误: Caused by: org.hibernate.HibernateExc
我有一个使用 Spring Repository 框架和 MySQL 数据库的应用程序。我目前已将其部署在 Tomcat 7 上。 一旦我部署并尝试登录到应用程序(第一次调用数据库),我收到以下异常:
我正在使用 Hibernate 最新版本 4.3.5.Final。 我的hibernate.cfg.xml文件内容: com.mysql.jdbc.Driver jdbc:my
我有一个 Spring Boot JPA 应用程序。每当我尝试运行它时,它都会失败: Caused by: org.hibernate.HibernateException: Access to Di
当有 Internet 连接时,Hibernate 工作正常。但是当没有互联网连接时,它给了我 Access to DialectResolutionInfo cannot be null when
我有一个 spring & hibernate 应用程序。当我使用 spring-boot:run 启动我的应用程序时,它可以正常工作。但是当我构建一个 war 文件并想将它部署到我的 tomcat7
即使设置 hibernate.dialect 属性后,我也会遇到异常。我使用的是 hibernate 5.0.11 和 spring boot 1.4.2,mysql 版本为 5.7 applicat
我正在尝试在我的 spring-boot 项目中配置 hibernate 。 我有 application.properties 文件 spring.datasource.url=jdbc:mysql
当我在远程连接到 Google Cloud SQL (MySQL) 的本地主机中运行程序时,它可以正常工作。一旦程序部署在 Google App Engine 中,所有必要的 IAM 权限都已到位,这
我是一名优秀的程序员,十分优秀!