Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate AttributeOverride注释错误_Java_Hibernate_Jpa_Spring Data - Fatal编程技术网

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;