我有一个映像备份,可以还原到 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 许可协议
检查以下几点:
"hibernate.hbm2ddl.auto"
设置为update
并查看它在数据库中创建的内容GenerationType.AUTO
。将其显式设置为GenerationType.IDENTITY
或GenerationType.SEQUENCE
取决于您想要什么或您的数据库支持。hibernate.id.new_generator_mappings
为 false