实际上我正在写一个api只用于从表中获取数据所以我不需要创建表但我需要记录每次调用db .i只是注释了属性文件中的spring.jpa.hibernate.ddl-auto = update避免在启动时创建表。在评论jpa自动创建代码后,我面临着保存对象的问题(id为0时的情况)。
的POJO
@Entity
@Table(name = "blabla")
public class ABCD{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
private int xxx;
private Date yyyy;
//
//
}
保存代码
model obj = new model(xx, yyy, zzz);
repository.save(obj);
评论该配置条目可能不是一个好主意,因为根据documentation,它可以自动设置为create-drop
,我建议你将其更改为none
以避免任何麻烦。
您可以显式设置spring.jpa.hibernate.ddl-auto,标准Hibernate属性值为none,validate,update,create和create-drop。 Spring Boot会根据是否认为您的数据库是嵌入式的,为您选择一个默认值。如果未检测到架构管理器,则默认为create-drop,在所有其他情况下,默认为none。通过查看连接类型来检测嵌入式数据库。 hsqldb,h2和derby是嵌入的,而其他则不是。从内存切换到“真实”数据库时要小心,不要假设新平台中存在表和数据。您必须显式设置ddl-auto或使用其他机制之一来初始化数据库。