无法调用“org.hibernate.mapping.PersistentClass.getTable()”,因为“classMapping”为空

问题描述 投票:0回答:1

我有一个实体“MasterSegment”,其组合键作为主键。该键引用了另一个实体“BkrApplication”。当我在没有 Liquibase 的情况下启动应用程序时,表格会完美生成,并且一切正常。

public class MasterSegment extends Auditable {

    @EmbeddedId
    private MasterSegmentId id;
    @OneToOne
    @MapsId("appId")
    private BkrApplication app;
    // getters setters omitted
}
@Embeddable
public class MasterSegmentId implements Serializable {
    @Column
    private String name;
    @Column(name = "app_id", nullable = false)
    private Long appId;
    // getters setters omitted
}

问题是当我尝试使用

mvn clean install liquibase:diff
生成 Liquibase 迁移时,出现以下错误:无法调用“org.hibernate.mapping.PersistentClass.getTable()”,因为“classMapping”为 null。

异常消息中没有任何提示,经过几个小时的调试,我注意到 @MapsId 导致了问题。我尝试删除它,但遇到了映射问题。

任何帮助将不胜感激。

谢谢

spring-boot hibernate liquibase
1个回答
0
投票

您的 BkrApplication 很可能不是 @Entity 注解的类,并且 Hibernate 元数据收集器正在努力解决它。

也很高兴看到您的 Auditable 课程。有时父母会带来不同。

最后,如果能看到调用的堆栈跟踪就好了。

© www.soinside.com 2019 - 2024. All rights reserved.