You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

@ManyToOne关联@MappedSuperclass标注的InstrumentUsage类时出现未知实体错误的问题咨询

@ManyToOne关联@MappedSuperclass标注的InstrumentUsage类时出现未知实体错误的问题咨询

我有一个父类:

@MappedSuperclass
public abstract class CommonDate extends HibernatePersistentObject implements Serializable {

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "INSTRUMENT_ID", nullable = false, unique = true)
    private InstrumentUsage instrumentUsage;
}

这个类没有@Id注解,因为它只是一个包含额外属性的父类,不会对应任何数据库表。

另一个继承自CommonDate的类是:

@Entity
@Table(name = "OBSERVATION_DATES")
public class ObservationDate extends CommonDate {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "DATES_SEQ")
    @SequenceGenerator(name = "DATES_SEQ", sequenceName = "DATES_SEQ")
    @Column(name = "OBSERVATION_DATE_ID")
    private int ObservationDateId;

    public ObservationDate(InstrumentUsage instrumentUsage) {
        super(instrumentUsage);
    }

    public ObservationDate() {
        super();
    }
}

这个类是我想要写入数据库OBSERVATION_DATES表的实体类。

还有第三个类InstrumentUsage,它的定义是:

@MappedSuperclass
public abstract class InstrumentUsage extends HibernatePersistentObject implements Serializable {
}

它同样没有@Id注解,但标注了@MappedSuperclass。现在我遇到的错误是:

org.hibernate.AnnotationException: @OneToOne or @ManyToOne on domain.ObservationDate.instrumentUsage references an unknown entity: domain.InstrumentUsage
    at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:100)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processEndOfQueue(InFlightMetadataCollectorImpl.java:1808)

是不是因为InstrumentUsage不是@Entity标注的类,所以我不能用@ManyToOne来关联它?

备注:内容来源于stack exchange,提问作者Michu93

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 10:42:58