【发布时间】:2023-03-12 19:35:01
【问题描述】:
我有一个User 实体和一个UserCompanyRole 实体。 UserCompanyRole 有一个复合主键。每个User 可以有多个角色。我知道应该避免使用复合主键,实际上我已经用 id 列替换了它,但我仍然想知道问题是我的代码还是 Envers。下面代码的结果是开始时出错。知道有什么问题吗?:
引起:javax.persistence.PersistenceException: [PersistenceUnit: default] 无法构建 Hibernate SessionFactory;嵌套异常是 org.hibernate.MappingException:实体映射中的重复列: domain.usercompany.UserCompanyRole_AUD 列:user_id(应该是 映射为 insert="false" update="false")
文件User.java
@Audited(withModifiedFlag = true, modifiedColumnName = "user_company_roles_mod")
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "user_id", insertable = false, updatable = false)
@AuditMappedBy(mappedBy = "user")
private List<UserCompanyRole> userCompanyRoles = new ArrayList<>();
文件UserCompanyRole.java
@EmbeddedId
private UserCompanyRoleId userCompanyRoleId;
@ManyToOne(fetch = FetchType.LAZY)
@MapsId("userId")
@Audited
private User user;
文件UserCompanyRoleId.java
@Embeddable
public class UserCompanyRoleId implements Serializable {
@Column(name = "company_id")
private Long companyId;
@Column(name = "user_id")
private Long userId;
@Column(name = "role")
private String role;
【问题讨论】:
标签: java spring hibernate jpa hibernate-envers