有应用程序 spring+jpa+envers(hibernate) envers 需要在特殊表中保存实体的历史记录。
在我保存了几次我的实体后,我希望在 USER 表中看到填充的版本字段,并在 USER_AUT 中看到填充的版本字段。但实际结果是 USER 表中的正确值,但添加了 REV_TYPE、REV 列(在字段中只是所有行的 couter)和版本列中的 null。
我使用 4.0.1.Final 休眠
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-envers</artifactId>
<version>4.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.0.1.Final</version>
</dependency>
但是,当我查看表格时,版本字段中的所有值都是空的
我的实体是
import lombok.*;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.envers.Audited;
import javax.persistence.*;
@Entity
@Audited
@Table(name = "User", uniqueConstraints = {
@UniqueConstraint(columnNames = { "prKey"})})
@NoArgsConstructor(access = AccessLevel.PUBLIC)
@AllArgsConstructor
@Getter
@Setter
public class User {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "PR_KEY", unique = true)
private String prKey;
@Column(name = "name", length = 100, unique = false)
private String name;
@Version
private int version;
public User(String name){
this.name = name;
}
}
当我使用审计获取实体时:
public List<User> getHistory(String id) {
AuditReader auditReader = AuditReaderFactory.get(entityManagerFactory.createEntityManager());
List<Number> auditVersions = auditReader.getRevisions(User.class, id);
List<User> users = auditVersions.stream().map(item -> auditReader.find(User.class, id, item.intValue())).collect(Collectors.toList());
return extractRiskMetrics(riskMetricRecords);
}
qq_花开花谢_0
动漫人物
相关分类