刚开始学习,第一次使用 JPA。
按照 spring 官网的 Guides 搭建了一个项目。
引用了 JPA 和 MYSQL
dependencies {
implementation('org.springframework.boot:spring-boot-starter-data-jpa')
implementation('org.springframework.boot:spring-boot-starter-data-rest')
implementation('org.springframework.boot:spring-boot-starter-web')
runtimeOnly('mysql:mysql-connector-java')
testImplementation('org.springframework.boot:spring-boot-starter-test')
}
创建了实体类,同时在 mysql 里创建了对应的表。
@Entity
@Table(name = "demo")
public class Demo {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;
private String name;
private String loginname;
private String loginpwd;
protected Demo(){}
public Demo(String name, String loginname, String loginpwd) {
this.name = name;
this.loginname = loginname;
this.loginpwd = loginpwd;
}
}
启动的时候报"Table 'DATABASE.hibernate_sequence' doesn't exist"的错误。
经过了解,我认为是实体类 @GenerateValue 设置的原因,应该是 GenerationType.AUTO 实际设置的类型是 TABLE,Spring 使用的 JPA 实现生成一个 hibernate_sequences 表,因为这个表不存在所以报错了。
把"strategy= GenerationType.AUTO"改成"GenerationType.IDENTITY"是可以解决
不过我现在有这么几个问题:
1
ukipoi OP 啊,最后问题那里是 JPA
|
3
chocotan 2018-12-17 12:49:25 +08:00 2
spring.jpa.hibernate.ddl-auto 设成 create 或者 update
application.properties 是 spring-boot 的配置文件 |
4
liuxey 2018-12-17 12:57:19 +08:00
了解下:GenerationType,如果你主键 mysql 自增,用 IDENTITY,
这里错误明确的告诉你 hibernate_sequence 不存在,AUTO 用了表来记录你的主键值 |
5
liuxey 2018-12-17 12:58:48 +08:00
Spring JPA hibernate 实现是众多实现里最“好”的,
|
6
luosuosile 2018-12-17 13:28:44 +08:00
现在看到一堆 jpa,jpa 比 ibatis 流行吗
|
7
Edsie 2018-12-17 13:45:46 +08:00
Jpa 可以帮你自动建表的,按照三楼设置好,你只需要写好实体类就行。
|