无法从数据库错误中获取 SequenceInformation,但一切正常
Could not fetch the SequenceInformation from the database ERROR but still everything works
我已经创建了用户和用户角色表
用户实体
@Entity
@Table(name = "USERS")
public class User {
@Id
@Column(name = "USERNAME", nullable = false, unique = true)
private String username;
@Column(name = "PASSWORD", nullable = false)
private String password;
@Column(name = "ENABLED", nullable = false)
private boolean enabled = true;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user", fetch = FetchType.EAGER)
private Set<UserRole> userRole = new HashSet<>();
userRole 实体
@Entity
@Table(name = "USER_ROLES", uniqueConstraints = @UniqueConstraint(
columnNames = { "ROLE", "USERNAME" }))
public class UserRole {
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "user_role_id",
unique = true, nullable = false)
private Integer userRoleId;
@Column(name = "ROLE")
private String role;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "USERNAME")
private User user;
当我启动我的应用程序时,我得到一个错误和这个堆栈跟踪:
ERROR JdbcEnvironmentImpl:420 - Could not fetch the SequenceInformation from the database
org.h2.jdbc.JdbcSQLException: Column "start_with" not found [42122-197]
但我没有任何 'start_with' 列。在我的 UserRole 实体没有 userRoleId 列之前,一切正常,但后来我将它添加到 do 'role' column not unique 然后发生了这种情况。但仍然一切正常,我只是被这个错误打扰了,这可能是什么原因?
我建议检查你的 Hibernate 方言。
由于 Hibernate 在我的 PostgresQL 数据库序列中查找 start_value
列,我遇到了类似的错误。此字段名称是 Hibernate 的 SequenceInformationExtractorLegacyImpl
class 中的默认值,它有许多子 class,每个都取决于您的精确数据库服务器及其版本。 Hibernate根据你指定的方言加载正确的class。
在我的例子中,我使用的是 org.hibernate.dialect.PostgreSQLDialect
方言,一种(已弃用)class 意味着与 PostgesQL 8.2 版本一起使用。我切换到 org.hibernate.dialect.PostgreSQL9Dialect
因为我的数据库托管在 PostgresQL 9 服务器上。问题消失了。
我已经创建了用户和用户角色表
用户实体
@Entity
@Table(name = "USERS")
public class User {
@Id
@Column(name = "USERNAME", nullable = false, unique = true)
private String username;
@Column(name = "PASSWORD", nullable = false)
private String password;
@Column(name = "ENABLED", nullable = false)
private boolean enabled = true;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user", fetch = FetchType.EAGER)
private Set<UserRole> userRole = new HashSet<>();
userRole 实体
@Entity
@Table(name = "USER_ROLES", uniqueConstraints = @UniqueConstraint(
columnNames = { "ROLE", "USERNAME" }))
public class UserRole {
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "user_role_id",
unique = true, nullable = false)
private Integer userRoleId;
@Column(name = "ROLE")
private String role;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "USERNAME")
private User user;
当我启动我的应用程序时,我得到一个错误和这个堆栈跟踪:
ERROR JdbcEnvironmentImpl:420 - Could not fetch the SequenceInformation from the database
org.h2.jdbc.JdbcSQLException: Column "start_with" not found [42122-197]
但我没有任何 'start_with' 列。在我的 UserRole 实体没有 userRoleId 列之前,一切正常,但后来我将它添加到 do 'role' column not unique 然后发生了这种情况。但仍然一切正常,我只是被这个错误打扰了,这可能是什么原因?
我建议检查你的 Hibernate 方言。
由于 Hibernate 在我的 PostgresQL 数据库序列中查找 start_value
列,我遇到了类似的错误。此字段名称是 Hibernate 的 SequenceInformationExtractorLegacyImpl
class 中的默认值,它有许多子 class,每个都取决于您的精确数据库服务器及其版本。 Hibernate根据你指定的方言加载正确的class。
在我的例子中,我使用的是 org.hibernate.dialect.PostgreSQLDialect
方言,一种(已弃用)class 意味着与 PostgesQL 8.2 版本一起使用。我切换到 org.hibernate.dialect.PostgreSQL9Dialect
因为我的数据库托管在 PostgresQL 9 服务器上。问题消失了。