无法使用@GeneratedValue生成主键(策略= GenerationType.SEQUENCE)

时间:2018-11-16 20:25:32

标签: java sql-server spring-data-jpa

我正在尝试在“ SQL Server 2012”中的表中插入一行。以下是我的域类:

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator ="Contact_Sequence")
@SequenceGenerator(name = "Contact_Sequence")
private Long id;

我遇到以下错误:

  

原因:com.microsoft.sqlserver.jdbc.SQLServerException:当IDENTITY_INSERT设置为OFF时,无法为表CONTACTS中的标识列插入显式值。

     

在com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:258)       在com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1535)

如果我将其更改为@GeneratedValue(strategy = GenerationType.IDENTITY),那么它将正常工作。

如何使用GenerationType.SEQUENCE?

1 个答案:

答案 0 :(得分:0)

问题是您没有为@SequenceGenerator提供sequenceName属性。

尝试将@GeneratedValue和@SequenceGenerator注释更改为:

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "Contact_Generator")
@SequenceGenerator(name="Contact_Generator", sequenceName = "Contact_Sequence")