# 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 |