我有一个简单的JOINED文档层次结构:
CREATE TABLE Documents
(
id INTEGER NOT NULL,
discriminator ENUM('official','individual','external') NOT NULL,
file_name VARCHAR(200) NOT NULL,
PRIMARY KEY (id)
);
CREATE SystemDocuments
(
id INTEGER NOT NULL,
binary_data BLOB NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (id) REFERENCES Documents (id)
);
CREATE ExternalDocuments
(
id INTEGER NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (id) REFERENCES SystemDocuments (id)
);
Run Code Online (Sandbox Code Playgroud)
如您所见,所有子表都与Documents表共享相同的ID.除此之外,SystemDocuments添加一binary_data列并且不ExternalDocuments添加任何新属性.(还要注意有层次结构中表示为其他两个具体子表'official'和'individual'它在这里是没有意义的.)
以下是上表的映射:
Document.java:
@Entity
@Table(name = "Documents")
@Inheritance(strategy = InheritanceType.JOINED) …Run Code Online (Sandbox Code Playgroud)