การแม็พ Many-to-many

ใช้ การแม็พ Many-to-Many เพื่อกำหนดความสัมพันธ์ many-valued กับความหลากหลาย many-to-many การแม็พ many-to-many มีสองด้าน: ด้านเจ้าของ และ ด้านที่ไม่ใช่เจ้าของ คุณต้องระบุตาราง join ทางด้านเจ้าของ สำหรับการแม็พสองทิศทาง ด้านเจ้าของสามารถอยู่ด้านใดก็ได้

  1. ใน มุมมองโครงสร้าง JPA เลือกฟิลด์เพื่อแม็พ

  2. คลิกขวาที่ฟิลด์แล้วเลือก แม็พเป็น > Many-to-Many มุมมองรายละเอียด JPA (สำหรับแอ็ตทริบิวต์) แสดงคุณสมบัติสำหรับฟิลด์ที่เลือก

  3. ใช้ตารางนี้เพื่อป้อนข้อมูลในฟิลด์ ข้อมูลทั่วไป ของมุมมอง รายละเอียด JPA ให้สมบูรณ์

    คุณสมบัติ รายละเอียด ดีฟอลต์
    ไฮเปอร์ลิงก์เอนทิตีการแม็พ กำหนดการแม็พนี้เป็น การแม็พ Many to Many

    ฟิลด์นี้ตรงกับการเพิ่มความคิดเห็น @ManyToMany

    Many to Many
    เอนทิตีเป้าหมาย เอนทิตีที่แอ็ตทริบิวต์นี้ถูกแม็พ null

    คุณไม่จำเป็นต้องระบุเอนทิตีเป้าหมายอย่างชัดเจน เนื่องจากสามารถถูกอนุมานได้จากชนิดของอ็อบเจ็กต์ที่ถูกอ้างอิงอยู่

    ดึงข้อมูล กำหนดวิธีที่ข้อมูลถูกโหลดจากฐานข้อมูล ดูที่ "เรียกข้อมูลชนิด" สำหรับรายละเอียด
    • Eager

    • Lazy

    Lazy
    แม็พโดย ฟิลด์ฐานข้อมูลที่เป็นเจ้าของความสัมพันธ์
    เรียงลำดับโดย ระบุลำดับดีฟอลต์สำหรับอ็อบเจ็กต์ที่ส่งคืนจากเคียวรี ดูที่ "เรียงลำดับโดย" สำหรับรายละเอียด
    • ไม่มีการเรียงลำดับ

    • คีย์หลัก

    • กำหนดเอง

    ไม่มีการเรียงลำดับ

  4. ใช้ตารางนี้เพื่อป้อนข้อมูลในฟิลด์ในพื้นที่ ข้อมูลตาราง Join ให้สมบูรณ์ในมุมมอง รายละเอียด JPA

    คุณสมบัติ รายละเอียด ดีฟอลต์
    ชื่อ ชื่อของตาราง join ที่มีคอลัมน์คีย์ foreign คุณต้องระบุตาราง join ทางด้านเจ้าของ

    โดยดีฟอลต์ ชื่อจะถือเป็นตารางหลักที่เชื่อมโยงกับเอนทิตีที่ต่อกันด้วย underscore

    คอลัมน์ Join เลือก การเขียนทับดีฟอลต์ จากนั้น เพิ่ม แก้ไข หรือลบคอลัมน์ join โดยดีฟอลต์ ชื่อจะถือเป็นตารางหลักที่เชื่อมโยงกับเอนทิตีที่ต่อกันด้วย underscore
    คอลัมน์ Inverse Join เลือก การเขียนทับดีฟอลต์ จากนั้น เพิ่ม แก้ไข หรือลบคอลัมน์ join โดยดีฟอลต์ การแม็พจะถือว่าเป็น single join

  5. เมื่อต้องการเพิ่มคอลัมน์ 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>")

 

งานที่เกี่ยวข้อง

การแม็พเอนทิตี

 

การอ้างอิงที่เกี่ยวข้อง

มุมมองโครงสร้าง JPA
มุมมองรายละเอียด JPA (สำหรับแอ็ตทริบิวต์)

 

แนวคิดที่เกี่ยวข้อง

เข้าใจการแม็พ OR
เข้าใจ EJB 3.0 Java Persistence API