เอนทิตีซูเปอร์คลาสถูกสร้างขึ้นโดยปริยายหรือไม่

ฉันมีเอนทิตี ลูกค้า ซึ่งขยายเอนทิตีซูเปอร์คลาส ผู้ใช้ ผู้ใช้มีประเภทการสืบทอดเป็น JOINED และมีคอลัมน์คีย์หลัก

หากฉันสร้างและคงอยู่อินสแตนซ์ของลูกค้า มันจะสร้างและคงอยู่อินสแตนซ์ที่เกี่ยวข้องของผู้ใช้โดยปริยายหรือไม่ ถ้าไม่ ฉันจะสร้างและคงอยู่อินสแตนซ์ของลูกค้าอย่างถูกต้องได้อย่างไร


person chRyNaN    schedule 02.04.2015    source แหล่งที่มา
comment
คุณใช้ไฮเบอร์เนตหรือเปล่า?   -  person Saif    schedule 02.04.2015
comment
ไม่ ฉันไม่ได้ใช้ไฮเบอร์เนต แค่เจพีเอ   -  person chRyNaN    schedule 02.04.2015
comment
คุณสามารถให้ตัวอย่างโค้ด/คำอธิบายประกอบที่ใช้ในเอนทิตี และแจ้งให้เราทราบว่าโค้ดนั้นใช้งานได้หรือไม่   -  person Aninda Bhattacharyya    schedule 02.04.2015
comment
การสืบทอดแบบเข้าร่วมหมายความว่ามีสองตารางที่แสดงถึงคลาสย่อย ดังนั้นเมื่อคุณยืนยันสถานะลูกค้า JPA จะแทรกแถวลงในตารางหลักทั้งหมดที่รวมกันเป็นอินสแตนซ์ของลูกค้า   -  person Chris    schedule 02.04.2015
comment
@Chris ดังนั้นคำตอบสำหรับคำถามของฉันคือ: ใช่มันจะสร้างและคงอยู่อินสแตนซ์ของซูเปอร์คลาสด้วยหรือไม่   -  person chRyNaN    schedule 02.04.2015
comment
ไม่จริง เนื่องจากคุณเรียกมันหลายอินสแตนซ์ จึงไม่มี 'อินสแตนซ์' ซูเปอร์คลาส ลูกค้าเป็นทั้งลูกค้าและผู้ใช้ - มีเพียงอินสแตนซ์เดียวเท่านั้น ที่ระดับฐานข้อมูล อินสแตนซ์ลูกค้าของคุณจะแมปกับสองตาราง และทั้งสองจะมีแถวเพื่อรองรับอินสแตนซ์ของลูกค้ารายนี้ ฉันต้องการให้ชัดเจนเนื่องจากผู้โพสต์บางคนเชื่อว่าคุณสามารถเปลี่ยนประเภท Java ได้โดยการเปลี่ยนแฟล็ก ฯลฯ   -  person Chris    schedule 02.04.2015
comment
ฉันเห็น. ฉันเข้าใจว่าโครงสร้างตารางทำงานอย่างไร ดังนั้นบางทีฉันควรจะใช้คำพูดที่แตกต่างออกไป ฉันแค่อยากจะตรวจสอบว่าผู้ให้บริการคงอยู่จะจัดการการทำแผนที่ และดูเหมือนว่าจะเป็นเช่นนั้น   -  person chRyNaN    schedule 02.04.2015


คำตอบ (1)


หากการแมปทั้งหมดถูกต้อง สิ่งนี้ควรจะได้ผล
โปรดตรวจสอบด้วยว่า @PrimaryKeyJoinColumn (annotation based) ถูกเพิ่มในคลาสย่อย

หากคุณต้องการข้อมูลเพิ่มเติมและช่วยค้นหา One Table Per Subclass Inheritance เพราะคุณใช้สิ่งนี้ ฉันเดาว่า

person Saif    schedule 02.04.2015
comment
หากไม่มีการระบุคำอธิบายประกอบ PrimaryKeyJoinColumn สำหรับคลาสย่อยในกลยุทธ์การแม็พ JOINED คอลัมน์คีย์ภายนอกจะถูกถือว่ามีชื่อเดียวกันกับคอลัมน์คีย์หลักของตารางหลักของซูเปอร์คลาส แหล่งที่มา ดังนั้นจึงไม่จำเป็นต้องใช้ @PrimaryKeyJoinColumn - person chRyNaN; 02.04.2015