わからないのですが、Hibernate は自動的に動作するべきですか?
次Category
のようにコード化されたエンティティがあります。
@Entity
public class Category {
@Id
public String Url;
@OneToMany
@JoinTable(name = "category_childs")
private Set<Category> childs = new HashSet<Category>();
@OneToMany
@JoinTable(name = "category_parents")
private Set<Category> parents = new HashSet<Category>();
@OneToMany(cascade=CascadeType.ALL)
private Set<Person> persons = new HashSet<Person>();
public String Title;
public boolean Done;
これにより、次のテーブルが作成されます
CREATE TABLE
category_parents
(
Category_Url VARCHAR(255) NOT NULL,
parents_Url VARCHAR(255) NOT NULL,
PRIMARY KEY (Category_Url, parents_Url),
CONSTRAINT FK9BB292C83275D6D7 FOREIGN KEY (Category_Url) REFERENCES category (Url) ,
CONSTRAINT FK9BB292C8569C2962 FOREIGN KEY (parents_Url) REFERENCES category (Url),
CONSTRAINT parents_Url UNIQUE (parents_Url),
parents_Url
一意であってはならないため、これは正しくありません (複数の行が同じ親を持つことを許可する必要があります)。
@JoinTable を指定せずにコーディングすると
@Entity
public class Category {
@Id
public String Url;
@ManyToMany(cascade=CascadeType.ALL)
//@JoinTable(name = "category_childs")
private Set<Category> childs = new HashSet<Category>();
@ManyToMany(cascade=CascadeType.ALL)
//@JoinTable(name = "category_parents")
private Set<Category> parents = new HashSet<Category>();
@OneToMany(cascade=CascadeType.ALL)
private Set<Person> persons = new HashSet<Person>();
public String Title;
public boolean Done;
それから私は次のものを持っています
CREATE TABLE
category_category
(
Category_Url VARCHAR(255) NOT NULL,
parents_Url VARCHAR(255) NOT NULL,
childs_Url VARCHAR(255) NOT NULL,
PRIMARY KEY (Category_Url, childs_Url),
CONSTRAINT FK8635931F3275D6D7 FOREIGN KEY (Category_Url) REFERENCES category (Url) ,
CONSTRAINT FK8635931F569C2962 FOREIGN KEY (parents_Url) REFERENCES category (Url) ,
CONSTRAINT FK8635931F6ADF3430 FOREIGN KEY (childs_Url) REFERENCES category (Url),
2つのフィールドを持つ関係テーブルを作成するためにHibernateを作成する方法は?
次のように:
CREATE TABLE
category_category
(
parents_Url VARCHAR(255) NOT NULL,
childs_Url VARCHAR(255) NOT NULL,
PRIMARY KEY (parents_Url, childs_Url),
CONSTRAINT FK8635931F569C2962 FOREIGN KEY (parents_Url) REFERENCES category (Url) ,
CONSTRAINT FK8635931F6ADF3430 FOREIGN KEY (childs_Url) REFERENCES category (Url),