gpt4 book ai didi

java - Hibernate AttributeOverride 注释错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:14:11 26 4
gpt4 key购买 nike

我有以下实体:

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;

}

还有我的 AuditorDetails 类:

@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: Repeated column in mapping for entity: com.aaa.MyEntity column: user_id (should be mapped with insert="false" update="false")

但我无法使该列不可更新且不可插入。主要目标是在 MyEntity 中拥有 4 列 - created_by_idcreated_by_client_idlast_modified_by_idlast_modified_by_client_id,其中将包含有关行修改和创建的所有数据。如何解决这个异常?

最佳答案

我已经解决了这个问题,只是添加注释AssociationOverrides:

@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;

关于java - Hibernate AttributeOverride 注释错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45669684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com