Çoktan çoğa basit tablolarım var. Bir Dönem birden fazla Kategoriye ait olabilir ve bir Kategori birden çok Şart'a atanabilir.Hazırda bekletme neden çoktan çoğa ilişki tablosu için birincil anahtar oluşturmuyor?
Term.java
@Entity
public class Term implements Serializable {
@Id
@GeneratedValue
private long id;
@NotNull
@Size(min = 1, max = 100)
private String name;
@ManyToMany(mappedBy="terms")
private List<Category> categories = new ArrayList<Category>();
...
// getters and setters
}
Category.java
@Entity
public class Category implements Serializable {
@Id
@GeneratedValue
private long id;
@NotNull
@Size(min = 1, max = 255)
private String name;
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
private List<Term> terms = new ArrayList<>();
// getters and setters
}
Bununla birlikte, oluşturulan kesişim tablosu "" Burada da görüleceği gibi, bir birincil anahtar ihtiva etmez:
MariaDB [wordDS]>describe Category_Term;
+---------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------+------+-----+---------+-------+
| categories_id | bigint(20) | NO | MUL | NULL | |
| terms_id | bigint(20) | NO | MUL | NULL | |
+---------------+------------+------+-----+---------+-------+
Kompozit Anahtar her zaman birincil anahtar olarak kullanılmamalıdır ve Hazırda bekletme tarafından otomatik olarak oluşturulmalıdır? Bunu otomatik olarak nasıl oluşturabilirim?
Birleştirme tablosunun neden bir anahtara ihtiyacı olur? – chrylis
Bir anahtar olmadan, tabloda normal olarak sakınılması gereken kopyalara izin verilir. – user697911