SQL Server 2016 - 无效的对象名称“hibernate_sequence”

新手上路,请多包涵

我有一个映像备份,可以还原到 MS SQL Server 2016。我有一个实体,它声明其 id 如下:

 @Id
@GeneratedValue(strategy = GenerationType.AUTO)
@XmlID
@XmlElement
@XmlJavaTypeAdapter(IntToStringXmlAdapter.class)
private Integer id;

当我保存收到的实体时:

 Hibernate: select next_val as id_val from hibernate_sequence with (updlock, rowlock) 2018-02-28 22:05:41.935
ERROR 18152 --- [nio-8080-exec-6] o.hibernate.id.enhanced.TableStructure   : could not read a hi value com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'hibernate_sequence'.

......
2018-02-28 22:05:41.942  WARN 18152 --- [nio-8080-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 208, SQLState: S0002

2018-02-28 22:05:41.942 ERROR 18152 --- [nio-8080-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper   : Invalid object name 'hibernate_sequence'.

我已经手动创建了 SQL 服务器的序列,并确保它通过 SSMS 存在。

 CREATE SEQUENCE hibernate_sequence
 AS INTEGER
 START WITH 1
 INCREMENT BY 1
 MINVALUE 1
 MAXVALUE 99
 NO CYCLE;

尽管如此,我继续收到以前的错误。

任何想法我做错了什么?

先感谢您

原文由 Investigator 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.1k
2 个回答

检查以下几点:

  • 你用的是什么方言?
  • 您使用的是什么休眠版本?版本 5 更改了 GenerationType.AUTO 行为
  • "hibernate.hbm2ddl.auto" 设置为 update 并查看它在数据库中创建的内容
  • 避免 GenerationType.AUTO 。将其显式设置为 GenerationType.IDENTITYGenerationType.SEQUENCE 取决于您想要什么或您的数据库支持。
  • 检查您是否拥有最新的 SQL Server JDBC 驱动程序。 我在从 hibertnate 4.3 迁移到 5.0 时遇到了问题
  • 在休眠 5 中设置 hibernate.id.new_generator_mappings 为 false

原文由 Robert Niestroj 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进