不管@AttributeOverrides

时间:2018-08-07 09:31:34

标签: java spring hibernate spring-data-jpa

该项目使用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;

}

0 个答案:

没有答案