我在Spring启动应用程序中使用了hibernate 我的域名模型就像这样
@Entity
@Table(name = "skill")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "skill")
@Audited
public class Skill implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
}
序列的增量大小为50并且正常工作 但是当我添加Envers Audited注释时,我看到了这个错误
'增量大小'的冲突值。找到[50]和[1]
如何解决此冲突?
答案 0 :(得分:0)
这听起来不像是Envers问题,而是一般的映射问题。
当您添加@Audited
注释时,它只是告知Envers它应该在Hibernate引导期间检查该特定实体映射,并创建必要的审计对象以在每次事务期间存储实体状态。
生成的Envers对象使用自己的序列生成器和主键。用户定义的生成策略,序列等都在Envers对象中被忽略,因为关联列只是一个复制/传递值,没什么特别的。
换句话说,Envers表将定义一个反映此POJO的PK:
@Embeddable
public class EnversSkillId implements Serializable {
@Column(name = "REV", nullable = false, updatable = false)
private Integer rev;
@Column(name = "id", nullable = false, updatable = false)
private Long id;
}
当Envers生成审核记录时,它会自动使用其内部序列生成器获取下一个值并将其分配给EnversSkillId#rev
并将实体的id
值直接复制到EnversSkillId#id
属性中
正如评论中所提到的,您的问题与Envers相关的可能性很小。