# java.lang.IllegalArgumentException: Not a managed type

JPA实体类没有被扫描到,导致这样的情况有以下几种可能

实体类没有加上@Entity注解

对应解决方法在实体类上加上@Entity即可解决问题

没有按照SpringBoot的约定,默认扫描(application.java 入口类相对的兄弟包及其子包)

解决办法

将application.java(入口类)放置到更高层级的包,使得项目结构符合SpringBoot约定扫描的规则

在启动类中添加扫描注解

@ComponentScan(basePackages = "com.boot.demo.xxx..")

用于扫描@Controller @Service

@EnableJpaRepositories(basePackages = "com.boot.demo.xxx.*.dao")

用于扫描Dao @Repository

@EntityScan("com.boot.demo.xxx..")

用于扫描JPA实体类 @Entity

# org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

Hibernate SQL方言没有设置导致的,在properties文件中增加下面这行:

spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
数据库 方言
DB2 org.hibernate.dialect.DB2Dialect
DB2 AS/400 org.hibernate.dialect.DB2400Dialect
DB2 OS390 org.hibernate.dialect.DB2390Dialect
PostgreSQL org.hibernate.dialect.PostgreSQLDialect
MySQL org.hibernate.dialect.MySQLDialect
MySQL with InnoDB org.hibernate.dialect.MySQLInnoDBDialect
MySQL with MyISAM org.hibernate.dialect.MySQLMyISAMDialect
Oracle (any version) org.hibernate.dialect.OracleDialect
Oracle 9i/10g org.hibernate.dialect.Oracle9Dialect
Sybase org.hibernate.dialect.SybaseDialect
Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialect
Microsoft SQL Server org.hibernate.dialect.SQLServerDialect
SAP DB org.hibernate.dialect.SAPDBDialect
Informix org.hibernate.dialect.InformixDialect
HypersonicSQL org.hibernate.dialect.HSQLDialect
Ingres org.hibernate.dialect.IngresDialect
Progress org.hibernate.dialect.ProgressDialect
Mckoi SQL org.hibernate.dialect.MckoiDialect
Interbase org.hibernate.dialect.InterbaseDialect
Pointbase org.hibernate.dialect.PointbaseDialect
FrontBase org.hibernate.dialect.FrontbaseDialect
Firebird org.hibernate.dialect.FirebirdDialect