我正在尝试使用Envers,但有一个问题:无法完成模式更新: org.hibernate.MappingException: org.hibernate.dialect.FirebirdDialect不支持池序列
@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;
}
发布于 2016-05-25 21:43:45
如果对这些行进行注释,Hibernate可以生成表:
//@SequenceGenerator(name = "GEN_BOOKS", sequenceName = "GEN_BOOKS", allocationSize = 1)
//@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "GEN_BOOKS")在持久性方面是必要的:
<property name="hibernate.hbm2ddl.auto" value="create"/>启动服务器和表将被创建。
现在有必要手动创建Trigguer和Generator
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;删除持久性:
<property name="hibernate.hbm2ddl.auto" value="create"/>删除
//@SequenceGenerator(name = "GEN_BOOKS", sequenceName = "GEN_BOOKS", allocationSize = 1)
//@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "GEN_BOOKS")相反,可以手动创建表。
注释@AuditedTable ( value = "BOOKS_LOG")
CREATE TABLE BOOKS_AUD(
ID INTEGER NOT NULL,
REV INTEGER NOT NULL, <-- IMPORTANT
REVTYPE SMALLINT, <-- IMPORTANT
TITLE VARCHAR(45)
);发生器和触发器
CREATE REVINFO (
ID integer not null,
REV integer not null,
REVTYPE smallint,
TITLE varchar(45)
);
ALTER TABLE REVINFO ADD
PRIMARY KEY (ID ,REV);发生器和触发器
发布于 2016-05-12 15:02:44
现在看来Hibernate并不认为
https://stackoverflow.com/questions/37168665
复制相似问题