【发布时间】:2019-05-11 00:40:19
【问题描述】:
我正在使用 Spring Data JPA,JPA 的实现是休眠的。
我使用的数据库是 Mysql。
实体将映射到 Mysql 表,并且在我启动 Spring 应用程序时自动创建该表。但是,当我将 ID 从 Integer 更改为 String 时,该表消失了,无法再创建。我有点困惑为什么会这样。让我发布代码比较如下。
之前的Entity:
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private String name;
private String email;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Entity 之后:
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class User {
@Id
private String id;
private String name;
private String email;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
之前的CrudRepository:
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import gearon.model.entity.User;
// This will be AUTO IMPLEMENTED by Spring into a Bean called userRepository
// CRUD refers Create, Read, Update, Delete
@Component
public interface UserRepository extends CrudRepository<User, Integer> {
}
CrudRepository 之后:
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import gearon.model.entity.User;
// This will be AUTO IMPLEMENTED by Spring into a Bean called userRepository
// CRUD refers Create, Read, Update, Delete
@Component
public interface UserRepository extends CrudRepository<User, String> {
}
编辑1
控制台的错误输出是:
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement
这是由
引起的com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 1000 bytes
编辑2
发现一个类似的问题没有答案但投票,似乎更多的人遇到了这个问题。
【问题讨论】:
标签: java spring-boot spring-data-jpa