我已经添加了application.properties文件,如下所示:
Spring DATASOURCE(数据源自动配置和数据源属性)spring.datasource.url = jdbc:mysql:// localhost:3306 / test?useSSL = false spring.datasource.username =根spring.datasource.password =根
休眠属性 SQL方言使Hibernate为选定的数据库生成更好的SQL spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
休眠ddl auto(创建,创建,删除,验证,更新)spring.jpa.hibernate.ddl-auto =创建
spring.jpa.properties.hibernate.current_session_context_class = org.springframework.orm.hibernate4.SpringSessionContext
对于dao层,类:
package com.repository;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Repository;
@Repository
public class DaoClass
{
@Autowired
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory()
{
return sessionFactory;
}
@Bean
public void setSessionFactory(SessionFactory sessionFactory)
{
this.sessionFactory = sessionFactory;
}
}
现在在运行springboot应用程序时,我面临以下错误:
********************************应用程序无法启动
说明:
com.repository.DaoClass中的字段sessionFactory需要一个Bean 键入找不到的“ org.hibernate.SessionFactory”。
操作:
考虑在其中定义类型为“ org.hibernate.SessionFactory”的bean 您的配置。
POM.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>springboot</groupId>
<artifactId>firstprogram</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
<name>firstprogram Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.3.6.Final</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>
<build>
<finalName>firstprogram</finalName>
</build>
</project>
我也添加了 PEP 484
package com.repository;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Component;
@Component
public class DaoClass
{
@PersistenceContext
private EntityManager entityManger;
public EntityManager getEntityManger()
{
return entityManger;
}
public void setEntityManger(EntityManager entityManger)
{
this.entityManger = entityManger;
}
}
答案 0 :(得分:0)
Spring boot不会自动配置SessionFactory
,而是配置EntityManagerFactory
,您可以直接使用它,也可以通过以下方式从中获取SessionFactory
:
SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class);