首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法完成模式更新Envers + Firebird

无法完成模式更新Envers + Firebird
EN

Stack Overflow用户
提问于 2016-05-11 16:41:40
回答 2查看 612关注 0票数 0
  • hibernate-核心4.3.7
  • hibernate-jpa-2.1-api
  • hibernate-envers 4.3.11
  • 火鸟2.5.5

我正在尝试使用Envers,但有一个问题:无法完成模式更新: org.hibernate.MappingException: org.hibernate.dialect.FirebirdDialect不支持池序列

代码语言:javascript
复制
@Entity
@Table(name = "BOOKS")
@SequenceGenerator(name = "GEN_BOOKS", sequenceName = "GEN_BOOKS", allocationSize = 1)
@Audited
public class BOOK implements Serializable , Comparable<BOOK> {
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "GEN_BOOKS")
    private Integer id;
    private String title;

}

EN

回答 2

Stack Overflow用户

发布于 2016-05-25 21:43:45

如果对这些行进行注释,Hibernate可以生成表:

代码语言:javascript
复制
//@SequenceGenerator(name = "GEN_BOOKS", sequenceName = "GEN_BOOKS", allocationSize = 1)
//@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "GEN_BOOKS")

在持久性方面是必要的:

代码语言:javascript
复制
<property name="hibernate.hbm2ddl.auto" value="create"/>

启动服务器和表将被创建。

现在有必要手动创建Trigguer和Generator

代码语言:javascript
复制
CREATE GENERATOR GEN_BOOKS;
SET GENERATOR GEN_BOOKS TO 1;

CREATE TRIGGER TR_BOOKS_ID FOR BOOKS
ACTIVE BEFORE INSERT POSITION 0
AS
  BEGIN
    IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_BOOKS , 1);
   END ;

COMMIT WORK;

删除持久性:

代码语言:javascript
复制
<property name="hibernate.hbm2ddl.auto" value="create"/>

删除

代码语言:javascript
复制
//@SequenceGenerator(name = "GEN_BOOKS", sequenceName = "GEN_BOOKS", allocationSize = 1)
//@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "GEN_BOOKS")

相反,可以手动创建表。

注释@AuditedTable ( value = "BOOKS_LOG")

代码语言:javascript
复制
CREATE TABLE BOOKS_AUD(
  ID INTEGER NOT NULL,         
  REV     INTEGER NOT NULL,    <-- IMPORTANT
  REVTYPE SMALLINT,            <-- IMPORTANT
  TITLE VARCHAR(45)

);

发生器和触发器

代码语言:javascript
复制
   CREATE REVINFO (     
        ID integer not null, 
        REV integer not null, 
        REVTYPE smallint, 
        TITLE varchar(45) 
    );

    ALTER TABLE REVINFO ADD
    PRIMARY KEY (ID ,REV);

发生器和触发器

票数 1
EN

Stack Overflow用户

发布于 2016-05-12 15:02:44

现在看来Hibernate并不认为

https://hibernate.atlassian.net/browse/HHH-8979

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37168665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档