【问题标题】:org.hibernate.exception.SQLGrammarException: could not prepare statement -- Spring ROOorg.hibernate.exception.SQLGrammarException:无法准备语句——Spring ROO
【发布时间】:2014-08-12 07:27:04
【问题描述】:

我正在使用 Spring Roo 工具构建和 Web 应用程序。在通过 roo shell 控制台创建我的类时,我多次使用选项-permitReservedWords 来创建一些类(例如角色、组和用户)。

生成 CRUD 视图后,我得到了这个异常:

“org.hibernate.exception.SQLGrammarException:无法准备 声明”

然后我意识到问题只发生在具有保留名称的实体上,所以我该如何强制这些实体名称,如果不可能,我该如何编辑名称,因为 eclipse 中的重构选项不能解决问题,特别是项目中有很多 AspectJ 文件...

【问题讨论】:

  • 您不能强制使用大多数数据库的保留名称(这些名称是 SQL 关键字)。问一个关于重构的单独问题。

标签: java spring hibernate hsqldb spring-roo


【解决方案1】:

请注意,JPA 默认表名是类名(减去包名),首字母大写,这就是您需要-permitReservedWords 的原因。默认情况下,您的实体 UserRole 等将存储在保留的 UserRole 等表中几乎所有数据库中的单词。

要更改默认行为,请使用注释“@Table(name="app_user")” (javax.persistence.Table) 来指定/自定义存储给定实体数据的数据库表名。例如,User 实体可以存储在 uzer 表中。

【讨论】:

  • 这就是我为解决这个问题所做的 :) 我会接受你的回答。
猜你喜欢
  • 2016-10-15
  • 2015-08-25
  • 2013-06-28
  • 2014-01-01
  • 2014-06-03
  • 2021-02-01
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多