Hibernate @抽象类中的OneToMany生成不可用的模式

Hibernate @抽象类中的OneToMany生成不可用的模式,hibernate,postgresql,jpa,Hibernate,Postgresql,Jpa,我有以下模型类: @Entity @Inheritance public abstract class BasePage { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id; @OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL) @MapKey(name="locale") private Map<

我有以下模型类:

@Entity
@Inheritance
public abstract class BasePage {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;

    @OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
    @MapKey(name="locale")
    private Map<String, Localized> text = new HashMap<String, Localized>();

    @OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
    @MapKey(name="locale")
    private Map<String, Localized> title = new HashMap<String, Localized>();

    // ....
}

@Entity
public class Localized {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;

    private String locale;

    @Lob
    @Type(type="org.hibernate.type.StringClobType")
    private String text;

    @Lob
    @Type(type="org.hibernate.type.StringClobType")
    private String synopsis;

    // ....
}

@Entity
@DiscriminatorValue("FLATPAGE")
public class FlatPage {
}

@Entity
@DiscriminatorValue("INSTITUTION")
public class Institution {
    @OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
    @MapKey(name="locale")
    private Map<String, Localized> contact;
}

问题是我无法创建FlatPage实体,因为contact_id具有NOTNULL约束。我怀疑我的模式可能会有更多的问题,但这正是我目前正在努力解决的问题……

您使用的是哪种类型的继承策略?从这段代码来看,它似乎将使用默认策略SINGLE_表。如果是这样,您还没有定义任何鉴别器吗?它确实是单表继承。关于鉴别器,你是对的,我一定是在简化我的示例实体时忘记了这些。。。我现在添加了它们。尽管如此,问题仍然存在:-/
CREATE TABLE basepage_localized
(
    basepage_id BIGINT NOT NULL,
    contact_id BIGINT NOT NULL,
    synopsis_id BIGINT NOT NULL,
    text_id BIGINT NOT NULL,
    PRIMARY KEY ( basepage_id, synopsis_id ),
    FOREIGN KEY ( basepage_id ) REFERENCES basepage ( id ),
    FOREIGN KEY ( text_id ) REFERENCES localized ( id ),
    FOREIGN KEY ( contact_id ) REFERENCES localized ( id ),
    FOREIGN KEY ( synopsis_id ) REFERENCES localized ( id )
);