无法从数据库错误中获取 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 服务器上。问题消失了。