Java Hibernate AttributeOverride注释错误
我有以下实体:Java Hibernate AttributeOverride注释错误,java,hibernate,jpa,spring-data,Java,Hibernate,Jpa,Spring Data,我有以下实体: public class MyEntity extends AuditableEntity { @Column private String name; } AuditableEntity类别: public class AuditableEntity { @Id @GenericGenerator(name = "uuid-gen", strategy = "uuid2") @GeneratedValue(generator = "uu
public class MyEntity extends AuditableEntity {
@Column
private String name;
}
AuditableEntity
类别:
public class AuditableEntity {
@Id
@GenericGenerator(name = "uuid-gen", strategy = "uuid2")
@GeneratedValue(generator = "uuid-gen", strategy = GenerationType.IDENTITY)
private String id;
@CreatedBy
@JsonIgnore
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "user", column = @Column(name = "created_by_id")),
@AttributeOverride(name = "clientId", column = @Column(name = "created_by_client_id"))
})
private AuditorDetails createdBy;
@LastModifiedBy
@JsonIgnore
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "user", column = @Column(name = "last_modified_by_id")),
@AttributeOverride(name = "clientId", column = @Column(name = "last_modified_by_client_id"))
})
private AuditorDetails lastModifiedBy;
}
@Embeddable
public class AuditorDetails {
@Column(name = "auditor_client_id")
private String clientId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn
private User user;
}
以及我的AuditorDetails
课程:
public class AuditableEntity {
@Id
@GenericGenerator(name = "uuid-gen", strategy = "uuid2")
@GeneratedValue(generator = "uuid-gen", strategy = GenerationType.IDENTITY)
private String id;
@CreatedBy
@JsonIgnore
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "user", column = @Column(name = "created_by_id")),
@AttributeOverride(name = "clientId", column = @Column(name = "created_by_client_id"))
})
private AuditorDetails createdBy;
@LastModifiedBy
@JsonIgnore
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "user", column = @Column(name = "last_modified_by_id")),
@AttributeOverride(name = "clientId", column = @Column(name = "last_modified_by_client_id"))
})
private AuditorDetails lastModifiedBy;
}
@Embeddable
public class AuditorDetails {
@Column(name = "auditor_client_id")
private String clientId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn
private User user;
}
另外,我还有一个AuditorAware
返回AuditorDetails
对象。当我尝试运行此操作时,出现以下异常:
org.hibernate.MappingException:实体映射中的重复列:
com.aaa.MyEntity列:用户id(应使用insert=“false”进行映射)
update=“false”)
但我无法使此列不可更新且不可插入。主要目标是在MyEntity中有4列-
创建人id
,创建人id
,上次修改人id
,上次修改人id
,上次修改人id
,这些列将包含关于行修改和创建的所有数据。如何修复此异常?我已经修复了此问题,只需添加注释关联覆盖项
:
@CreatedBy
@JsonIgnore
@Embedded
@AssociationOverrides({
@AssociationOverride(name = "user", joinColumns = @JoinColumn(name = "created_by_id"))
})
@AttributeOverrides({
@AttributeOverride(name = "user", column = @Column(name = "created_by_id")),
@AttributeOverride(name = "clientId", column = @Column(name = "created_by_client_id"))
})
private AuditorDetails createdBy;
@LastModifiedBy
@JsonIgnore
@Embedded
@AssociationOverrides({
@AssociationOverride(name = "user", joinColumns = @JoinColumn(name = "last_modified_by_id"))
})
@AttributeOverrides({
@AttributeOverride(name = "user", column = @Column(name = "last_modified_by_id")),
@AttributeOverride(name = "clientId", column = @Column(name = "last_modified_by_client_id"))
})
private AuditorDetails lastModifiedBy;
我已经解决了这个问题,只需添加注释
关联覆盖
:
@CreatedBy
@JsonIgnore
@Embedded
@AssociationOverrides({
@AssociationOverride(name = "user", joinColumns = @JoinColumn(name = "created_by_id"))
})
@AttributeOverrides({
@AttributeOverride(name = "user", column = @Column(name = "created_by_id")),
@AttributeOverride(name = "clientId", column = @Column(name = "created_by_client_id"))
})
private AuditorDetails createdBy;
@LastModifiedBy
@JsonIgnore
@Embedded
@AssociationOverrides({
@AssociationOverride(name = "user", joinColumns = @JoinColumn(name = "last_modified_by_id"))
})
@AttributeOverrides({
@AttributeOverride(name = "user", column = @Column(name = "last_modified_by_id")),
@AttributeOverride(name = "clientId", column = @Column(name = "last_modified_by_client_id"))
})
private AuditorDetails lastModifiedBy;