在我的春季mvc应用程序中,我有以下对象。我正在尝试使用我的应用中的devtool
来显示数据。
@Entity
@Data
public class ConsultationRequest {
@Id
@GeneratedValue
private Long id;
private String name;
private String email;
private String purpose;
private String programme;
private int year;
private String language;
private String comments;
@Enumerated(EnumType.STRING)
private ConsultationStatus status;
}
然后我用jpa来制作实体:
@Repository
public interface ConsultationRequestRepository extends JpaRepository<ConsultationRequest, Long> {
}
问题是当我加载我的应用程序时,我遇到了2个错误:
Unsuccessful: drop sequence hibernate_sequence
[36morg.hibernate.tool.hbm2ddl.SchemaExport Sequence "HIBERNATE_SEQUENCE" not found; SQL statement:
然后当我打开
http://localhost:8080/h2-console/
我看不到桌子。 似乎在启动过程中,表没有制作。
答案 0 :(得分:31)
更新您的代码,如下所示:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
由于您尚未指定序列表名,因此hibernate将查找名为 hibernate_sequence 的序列表,并将其用作默认。
对于Oracle / Postgres,使用的增量字段是序列表 在MySql中,有增量字段自动递增。
答案 1 :(得分:4)
检查persistence.xml
property name="hibernate.hbm2ddl.auto" value="create"
不是hdm2ddl
这适用于我的情况。
答案 2 :(得分:2)
在属性文件中设置以下属性可帮助我解决休眠5.4v的hibernate_sequence
问题
spring:
jpa:
hibernate:
use-new-id-generator-mappings: false
答案 3 :(得分:0)
如果您将第二个缓存与Liquidbase一起使用,则必须将序列添加到更改日志中,如下所示:
<changeSet author="liquibase-docs"
id="createSequence-example">
<createSequence catalogName="cat" cycle="false"
incrementBy="1" ordered="true" schemaName="public"
sequenceName="hibernate_sequence" startValue="0" />
</changeSet>
答案 4 :(得分:0)
如果有人通过 Spring Boot测试(使用H2)遇到此错误,我们必须在application.properties(或我们使用的任何配置文件)中使用以下代码:
spring.jpa.hibernate.ddl-auto = create-drop
答案 5 :(得分:0)
对于Mysql:
不加自增,修改你的表:
ALTER TABLE table_name MODIFY COLUMN id BIGINT AUTO_INCREMENT=1