我认为这可能是复制品:Schema-validation: missing table [hibernate_sequences]但我想不出来。
在我的application.properties
文件中,我有这个选项:spring.jpa.hibernate.ddl-auto=validate
,我收到此错误:Schema-validation: missing table [game]
为什么我会收到这个?
下面是我的Game
类和User
类:
游戏:
@Entity
public class Game {
@Id
@Column(name = "GAME_NUMBER")
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long gameNumber;
private int playerScore;
private int NPCScore;
private Date datetime;
@ManyToOne
@JoinColumn(name="USER_ID")
private User user;
public Game() {}
public Game(int playerScore, int nPCScore, Date datetime) {
super();
this.playerScore = playerScore;
this.NPCScore = nPCScore;
this.datetime = datetime;
}
public User getUser() {
return user;
}
} + getters & setters
用户:
@Entity
public class User {
@Id
@Column(name = "USER_ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long userId;
private String username;
private String password;
@OneToMany(mappedBy="user",cascade=CascadeType.ALL)
private List<Game> games;
@ElementCollection
private List<Date> startSessions;
public User() {}
public User(String username, String password, List<Game> games, List<Date> startSessions) {
super();
this.username = username;
this.password = password;
this.games = games;
this.startSessions = startSessions;
}
}
7条答案
按热度按时间0dxa2lsx1#
validate
验证实体是否与目标兼容,在某种程度上,这并不是万无一失的,无论您尝试验证的数据库是什么,它都没有一个名为game
的表来存储实体。这个答案更详细地说明了
validate
的作用。Hibernate - hibernate.hbm2ddl.auto = validate
具体而言,
检查表、列、ID生成器是否存在
在不知道您的数据库/期望(您期望创建数据库,还是使用Flyway/Liquibase创建/更新数据库等)的情况下,我无法回答
validate
是否适合您的用例。您可以尝试使用
create-drop
在启动/关闭时创建和删除表,但这不是对数据库进行生产控制的解决方案。ogsagwnx2#
我得到的结果和我改用Hibernate 5.4.0.Final时一样。要么是Hibernate突然出现识别默认模式的问题,要么是驱动程序没有正确返回模式。我可以通过将模式定义添加到表定义中来绕过它。
或者通过在persistence.xml中添加默认模式。
siv3szwd3#
不要忘记权限:GRANT选择、插入、更新、删除、更改ON表名TO用户名;
olqngx594#
在flywayDB中使用spring Boot 时可能会出现此错误。此问题可能是由于flywayDB使用的脚本文件的命名约定错误所致。
https://flywaydb.org/documentation/migrations#naming
wlzqhblo5#
SQL标准要求名称以大写形式存储,如果您以小写形式命名表/字段- JPA可以自动将大小写转换为大写,并尝试在这种情况下搜索名称,但以小写形式
¯\_(ツ)_/¯
写入日志kuuvgm7e6#
在application.yml中添加此内容:
ckx4rj1h7#
Hibernate版本5.6.9,区分大小写的实现: