Spring Hibernate mysql:字段'id'没有默认值[重复]
Posted
技术标签:
【中文标题】Spring Hibernate mysql:字段\'id\'没有默认值[重复]【英文标题】:Spring Hibernate mysql: Field 'id' doesn't have a default value [duplicate]Spring Hibernate mysql:字段'id'没有默认值[重复] 【发布时间】:2020-01-02 20:47:15 【问题描述】:我知道之前有人问过这个问题,但无法解决问题。 我想通过@Entitiy 类生成一个表。
@Entity
public class Test implements Serializable
@Id
@GeneratedValue long id;
.
.
.
在我的应用属性中我得到了:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
spring.jpa.database=mysql
spring.jpa.hibernate.ddl-auto=create
spring.jpa.properties.hibernate.show_sql=true
我正在运行 mysql 5.7。问题是创建了表并且 id 被标记为主键。但是 Default 是 NULL 并且 Extra (我期望自动增量)是空的。
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id | bigint(20) | NO | PRI | NULL | |
+----------+--------------+------+-----+---------+-------+
是否有我遗漏的东西或已被设计的东西?
【问题讨论】:
【参考方案1】:您的意思是要对 id 字段使用自动增量?如果是,则必须将@GeneratedValue
的策略指定为IDENTITY
:
@Entity
public class Test implements Serializable
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
【讨论】:
谢谢你,成功了。我尝试了基于objectdb.com/java/jpa/entity/generated 的.AUTO 但这不起作用,而据我所知,应该为新对象自动生成ID。以上是关于Spring Hibernate mysql:字段'id'没有默认值[重复]的主要内容,如果未能解决你的问题,请参考以下文章
CannotAcquireLockException(Spring、Hibernate、MySQL)
Spring Boot 的 Hibernate 字段命名问题(命名策略)
Spring Boot 的 Hibernate 字段命名问题(命名策略)
Spring、Spring Security、JPA、MySQL、Hibernate 配置