1 回答
TA贡献1858条经验 获得超8个赞
目前,Envers 不支持在可嵌入对象中嵌套嵌入对象的想法,当我们映射标识符列时,如您的示例所示。Envers 目前支持的唯一有效映射是可嵌入对象中的属性是 a 或 类型。@ManyToOne@Basic
您可以解决此问题,但它涉及更明确一点,而不是使用。我的意思是重写如下:RecordIdBlocRecordId
@Embeddable
public class BlocRecordId implements Serializable {
@Column(name = "identifier_")
String identifier;
@Column(name = "recordType_")
String recordType;
@Column(name = "source_")
String source;
@Column(name = "messageType_")
String messageType;
@Transient
private RecordId recordId;
/** Helper method to assign the values from an existing RecordId */
public void setRecordId(RecordId recordId) {
this.identifier = recordId.getIdentifier();
this.recordType = recordId.getRecordType();
}
/** Helper method to get the RecordId, caching it to avoid multiple allocations */
public RecordId getRecordId() {
if ( recordId == null ) {
this.recordId = new RecordId( identifier, recordType );
}
return this.recordId;
}
}
我同意这并不理想,但它至少可以解决代码的当前限制。我已经添加并添加了HHH-13361作为开放问题来支持这一点。如果您愿意,欢迎您做出贡献,或者我将努力为Envers 6.0提供此支持。
添加回答
举报