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 )
);