还有就是实体如果成功设置了自增长,sqlserver还需要设置自增长吗?
求助。。。
10 个解决方案
#1
#2
没人吗。。。?
#3
看你的代码应该没问题啊,是这么注解的,你有没有试过将identity改成native?
#4
刚看了下API文档,上面有这段话。The name of the primary key generator to use as specified in the SequenceGenerator or TableGenerator annotation.
你试下在你的类名称上增加一个@SequenceGenerator(name="carSEQ",sequenceName="carSEQ_DB")
在getId()方法上面加
@Id
@GeneratedValue(generator = "carSEQ")
@GenericGenerator(name = "carSEQ", strategy = "native")
@Column(name = "id", unique = true, nullable = false)
试一下。不知道行不行。
再不行就只能等大牛了。
还有建议你把这种ID生成策略单独写一个类IdEntity,在类上注解@MappedSuperclass。以后写po就直接集成这个类,省去每个类都需要搞一个ID生成策略。
你试下在你的类名称上增加一个@SequenceGenerator(name="carSEQ",sequenceName="carSEQ_DB")
在getId()方法上面加
@Id
@GeneratedValue(generator = "carSEQ")
@GenericGenerator(name = "carSEQ", strategy = "native")
@Column(name = "id", unique = true, nullable = false)
试一下。不知道行不行。
再不行就只能等大牛了。
还有建议你把这种ID生成策略单独写一个类IdEntity,在类上注解@MappedSuperclass。以后写po就直接集成这个类,省去每个类都需要搞一个ID生成策略。
#5
我也是你的第一种写法 我的没问题啊 你的插入语句怎么写的
#6
@Id
@GenericGenerator(name="idGenerator",strategy="uuid")
@GeneratedValue(generator="idGenerator")
我的是这样设置的, 都在提示 id的值不能为null嘛,你插入数据的时候设断点检查一下id是什么呀?
还有@Column(name="id", unique=true, nullable=false) , // nullable:表示该字段是否允许为null,默认为true
unique:表示该字段是否是唯一标识,默认为false
@GenericGenerator(name="idGenerator",strategy="uuid")
@GeneratedValue(generator="idGenerator")
我的是这样设置的, 都在提示 id的值不能为null嘛,你插入数据的时候设断点检查一下id是什么呀?
还有@Column(name="id", unique=true, nullable=false) , // nullable:表示该字段是否允许为null,默认为true
unique:表示该字段是否是唯一标识,默认为false
#7
有可能是你这个表的主键ID在数据库中没有设为标识列,也就是没有设置自动增长
#8
自动增长identity适用于MySQL、DB2、MS SQL Server,采用数据库生成的主键,用于为long、short、int类型生成唯一标识
使用SQL Server 和 MySQL 的自增字段,这个方法不能放到 Oracle 中,Oracle 不支持自增字段,要设定sequence(MySQL 和 SQL Server 中很常用)
使用SQL Server 和 MySQL 的自增字段,这个方法不能放到 Oracle 中,Oracle 不支持自增字段,要设定sequence(MySQL 和 SQL Server 中很常用)
#9
改成 auto试试,IDENTITY 需要数据库支持,也就是说你的建表sql文是否支持IDENTITY
#10
stretagy=AUTO
#1
#2
没人吗。。。?
#3
看你的代码应该没问题啊,是这么注解的,你有没有试过将identity改成native?
#4
刚看了下API文档,上面有这段话。The name of the primary key generator to use as specified in the SequenceGenerator or TableGenerator annotation.
你试下在你的类名称上增加一个@SequenceGenerator(name="carSEQ",sequenceName="carSEQ_DB")
在getId()方法上面加
@Id
@GeneratedValue(generator = "carSEQ")
@GenericGenerator(name = "carSEQ", strategy = "native")
@Column(name = "id", unique = true, nullable = false)
试一下。不知道行不行。
再不行就只能等大牛了。
还有建议你把这种ID生成策略单独写一个类IdEntity,在类上注解@MappedSuperclass。以后写po就直接集成这个类,省去每个类都需要搞一个ID生成策略。
你试下在你的类名称上增加一个@SequenceGenerator(name="carSEQ",sequenceName="carSEQ_DB")
在getId()方法上面加
@Id
@GeneratedValue(generator = "carSEQ")
@GenericGenerator(name = "carSEQ", strategy = "native")
@Column(name = "id", unique = true, nullable = false)
试一下。不知道行不行。
再不行就只能等大牛了。
还有建议你把这种ID生成策略单独写一个类IdEntity,在类上注解@MappedSuperclass。以后写po就直接集成这个类,省去每个类都需要搞一个ID生成策略。
#5
我也是你的第一种写法 我的没问题啊 你的插入语句怎么写的
#6
@Id
@GenericGenerator(name="idGenerator",strategy="uuid")
@GeneratedValue(generator="idGenerator")
我的是这样设置的, 都在提示 id的值不能为null嘛,你插入数据的时候设断点检查一下id是什么呀?
还有@Column(name="id", unique=true, nullable=false) , // nullable:表示该字段是否允许为null,默认为true
unique:表示该字段是否是唯一标识,默认为false
@GenericGenerator(name="idGenerator",strategy="uuid")
@GeneratedValue(generator="idGenerator")
我的是这样设置的, 都在提示 id的值不能为null嘛,你插入数据的时候设断点检查一下id是什么呀?
还有@Column(name="id", unique=true, nullable=false) , // nullable:表示该字段是否允许为null,默认为true
unique:表示该字段是否是唯一标识,默认为false
#7
有可能是你这个表的主键ID在数据库中没有设为标识列,也就是没有设置自动增长
#8
自动增长identity适用于MySQL、DB2、MS SQL Server,采用数据库生成的主键,用于为long、short、int类型生成唯一标识
使用SQL Server 和 MySQL 的自增字段,这个方法不能放到 Oracle 中,Oracle 不支持自增字段,要设定sequence(MySQL 和 SQL Server 中很常用)
使用SQL Server 和 MySQL 的自增字段,这个方法不能放到 Oracle 中,Oracle 不支持自增字段,要设定sequence(MySQL 和 SQL Server 中很常用)
#9
改成 auto试试,IDENTITY 需要数据库支持,也就是说你的建表sql文是否支持IDENTITY
#10
stretagy=AUTO