Hibernate修改hibernate.hbm2ddl.auto为update后遇问题求助
别担心,这条日志根本不是问题!
首先要明确:你看到的这条日志
org.hibernate.hql.internal.QueryTranslatorFactoryInitiator initiateService INFO: HHH000397: Using ASTQueryTranslatorFactory
完全是正常的启动信息,不是错误!它只是Hibernate在告诉你,它正在使用ASTQueryTranslatorFactory来解析和翻译你的HQL查询语句——不管你把hibernate.hbm2ddl.auto设为create还是update,这条日志都可能出现,只是之前你可能没注意到INFO级别的日志输出而已。
你对create和update的功能理解是准确的:
create会在每次启动时删除现有表,重新创建全新的表结构update会保留现有表,仅根据实体类的变化来更新表结构(比如新增字段、调整字段类型等)
如果你的写入操作真的出现了失败(而不是只看到这条日志),可以按下面的步骤排查:
- 检查数据库连接有效性:确认Mac上的MySQL服务正在运行,JDBC URL、用户名、密码的配置没有拼写错误
- 核对实体类与表结构的映射:
update模式下,如果实体类和现有数据库表结构不兼容(比如实体类新增了非空字段但表中无默认值、字段类型不匹配),会导致写入失败,此时Hibernate会输出带ERROR标记的真正错误日志,一定要重点关注这类日志 - 确认数据库权限:当前MySQL用户需要拥有目标数据库的
ALTER(修改表结构)和INSERT(写入数据)权限,否则update模式下更新表结构或写入数据会失败 - 调整日志级别(可选):如果觉得INFO级别的日志太干扰,可以修改你的日志配置(比如log4j2、slf4j的配置文件),把
org.hibernate相关的日志级别设为WARN或ERROR,这样就不会看到这类无关的启动信息了
内容的提问来源于stack exchange,提问作者Hiber
相关产品推荐
相关产品推荐

