ใช้ การแม็พ Many-to-Many เพื่อกำหนดความสัมพันธ์ many-valued กับความหลากหลาย many-to-many การแม็พ many-to-many มีสองด้าน: ด้านเจ้าของ และ ด้านที่ไม่ใช่เจ้าของ คุณต้องระบุตาราง join ทางด้านเจ้าของ สำหรับการแม็พสองทิศทาง ด้านเจ้าของสามารถอยู่ด้านใดก็ได้
ใน มุมมองโครงสร้าง JPA เลือกฟิลด์เพื่อแม็พ
คลิกขวาที่ฟิลด์แล้วเลือก แม็พเป็น > Many-to-Many มุมมองรายละเอียด JPA (สำหรับแอ็ตทริบิวต์) แสดงคุณสมบัติสำหรับฟิลด์ที่เลือก
ใช้ตารางนี้เพื่อป้อนข้อมูลในฟิลด์ ข้อมูลทั่วไป ของมุมมอง รายละเอียด JPA ให้สมบูรณ์
คุณสมบัติ | รายละเอียด | ดีฟอลต์ |
---|---|---|
ไฮเปอร์ลิงก์เอนทิตีการแม็พ | กำหนดการแม็พนี้เป็น การแม็พ Many to Many
ฟิลด์นี้ตรงกับการเพิ่มความคิดเห็น |
Many to Many |
เอนทิตีเป้าหมาย | เอนทิตีที่แอ็ตทริบิวต์นี้ถูกแม็พ | null
คุณไม่จำเป็นต้องระบุเอนทิตีเป้าหมายอย่างชัดเจน เนื่องจากสามารถถูกอนุมานได้จากชนิดของอ็อบเจ็กต์ที่ถูกอ้างอิงอยู่ |
ดึงข้อมูล | กำหนดวิธีที่ข้อมูลถูกโหลดจากฐานข้อมูล ดูที่ "เรียกข้อมูลชนิด" สำหรับรายละเอียด
|
Lazy |
แม็พโดย | ฟิลด์ฐานข้อมูลที่เป็นเจ้าของความสัมพันธ์ | |
เรียงลำดับโดย | ระบุลำดับดีฟอลต์สำหรับอ็อบเจ็กต์ที่ส่งคืนจากเคียวรี ดูที่ "เรียงลำดับโดย" สำหรับรายละเอียด
|
ไม่มีการเรียงลำดับ |
ใช้ตารางนี้เพื่อป้อนข้อมูลในฟิลด์ในพื้นที่ ข้อมูลตาราง Join ให้สมบูรณ์ในมุมมอง รายละเอียด JPA
คุณสมบัติ | รายละเอียด | ดีฟอลต์ |
---|---|---|
ชื่อ | ชื่อของตาราง join ที่มีคอลัมน์คีย์ foreign | คุณต้องระบุตาราง join ทางด้านเจ้าของ
โดยดีฟอลต์ ชื่อจะถือเป็นตารางหลักที่เชื่อมโยงกับเอนทิตีที่ต่อกันด้วย underscore |
คอลัมน์ Join | เลือก การเขียนทับดีฟอลต์ จากนั้น เพิ่ม แก้ไข หรือลบคอลัมน์ join | โดยดีฟอลต์ ชื่อจะถือเป็นตารางหลักที่เชื่อมโยงกับเอนทิตีที่ต่อกันด้วย underscore |
คอลัมน์ Inverse Join | เลือก การเขียนทับดีฟอลต์ จากนั้น เพิ่ม แก้ไข หรือลบคอลัมน์ join | โดยดีฟอลต์ การแม็พจะถือว่าเป็น single join |
เมื่อต้องการเพิ่มคอลัมน์ Join หรือ Inverse Join ใหม่ให้คลิก เพิ่ม
เมื่อต้องการแก้ไขคอลัมน์ Join หรือ Inverse Join ที่มีอยู่ เลือกฟิลด์และคลิก แก้ไข
Eclipse เพิ่มการเพิ่มความคิดเห็นต่อไปนี้กับฟิลด์:
@JoinTable(joinColumns=@JoinColumn(name="<JOIN_COLUMN>"), name = "<JOIN_TABLE_NAME>") @ManyToMany(cascade=CascadeType.<CASCADE_TYPE>, fetch=FetchType.<FETCH_TYPE>, targetEntity=<TARGET_ENTITY>, mappedBy = "<MAPPED_BY>") @OrderBy("<ORDER_BY>")