该项目使用Spring Boot 2.0.1.RELEASE(Hibernate 5.2.16.FINal)。
我有TransactionHeaderEntity
实体,可在其中嵌入ID。嵌入类型为TransactionHeaderId
。我使用@AttributeOverrides
批注为嵌入类型中的每个字段指定列名,以便与数据库中的字段匹配。尽管如此,Hibernate Scheme Validator仍在列transaction_entity_transaction_uuid
中搜索,列从未在代码中引用。
更改Hibernate常规配置不是一种选择,因为我正在开发一个可在不同项目中重用的模块。
原因:org.hibernate.tool.schema.spi.SchemaManagementException:模式验证:表[t_trk_transaction_headers]中缺少列[transaction_entity_transaction_uuid]
@Entity
@Table(name = "T_TRK_TRANSACTION_HEADERS")
@Data @NoArgsConstructor
@Cacheable(false)
public class TransactionHeaderEntity {
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "transactionUUID", column = @Column(name = "TRANSACTION_UUID")),
@AttributeOverride(name = "type", column = @Column(name = "TRANSACTION_HEADER_TYPE")),
@AttributeOverride(name = "name", column = @Column(name = "NAME"))
})
private TransactionHeaderId id;
@Column(length = 200)
private String value;
}
@Embeddable
@Data @NoArgsConstructor
public class TransactionHeaderId implements Serializable {
private static final long serialVersionUID = 3932679614644963694L;
private String transactionUUID;
@Enumerated(EnumType.STRING)
private TransactionHeaderType type;
private String name;
}