【发布时间】:2011-08-20 04:18:24
【问题描述】:
现在我无法使用 Hibernate 映射链接表。
首先我想解释一下我想要映射的内容: 我有 3 个表:Product、DocumentType、Language。
一个产品可以在每种特定语言中拥有每个 DocumentType(目前我们有 7 个 DocumentType)(目前我们有 3 种语言)
这意味着产品“1”可以使用语言“EN”、“ES”和“FR”的 DocumentType“A”。
我创建了一个带有 3 个外键的链接表,这些外键也是复合主键。
这是我的 sql 的样子。
CREATE TABLE Person(
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(255)
);
CREATE TABLE DocumentType(
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(255),
key varchar(255)
);
CREATE TABLE Language(
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(255),
code varchar(2)
);
CREATE TABLE Person_DocumentType_Language(
person_id int NOT NULL,
doc_id int NOT NULL,
lang_id NOT NULL,
FOREIGN KEY(person_id)
REFERENCES Person(id),
FOREIGN KEY(doc_id)
REFERENCES DocumentType(id),
FOREIGN KEY(lang_id)
REFERENCES Language(id),
PRIMARY KEY(person_id, doc_id, lang_id)
);
通过最后一个链接表,我可以知道哪个 Person 有哪些 DocumentTypes 以及使用哪些语言。 我最感兴趣的是 DocumentType 对一个人有哪种语言的信息。
假设我是人 A。现在我想知道我有哪些 DocumentTypes 和哪些语言。我认为在 SQL 中它看起来像这样:
Select doc_id, lang_id from Person_DocumentType_Language where person_id=1
这有意义吗?我如何在 Hibernate 中映射它?
【问题讨论】:
标签: java sql hibernate mapping