คำถามติดแท็ก one-to-one

9
ฉันจะทำให้ความสัมพันธ์ JPA OneToOne ขี้เกียจได้อย่างไร
ในแอปพลิเคชันนี้เรากำลังพัฒนาเราสังเกตว่ามุมมองนั้นช้าเป็นพิเศษ ฉันทำมุมมองและสังเกตว่ามีหนึ่งแบบสอบถามดำเนินการโดยจำศีลซึ่งใช้เวลา 10 วินาทีแม้ว่าจะมีเพียงสองวัตถุในฐานข้อมูลเพื่อดึงข้อมูล ทั้งหมดOneToManyและManyToManyความสัมพันธ์ที่มีความขี้เกียจเพื่อให้เป็นไม่ได้เป็นปัญหา เมื่อตรวจสอบ SQL ที่เกิดขึ้นจริงฉันสังเกตว่ามีการรวมมากกว่า 80 รายการในแบบสอบถาม การตรวจสอบเพิ่มเติมปัญหาฉันสังเกตเห็นว่าปัญหาเกิดจากลำดับชั้นลึกOneToOneและManyToOneความสัมพันธ์ระหว่างคลาสเอนทิตี้ ดังนั้นฉันคิดว่าฉันจะทำให้พวกเขาขี้เกียจที่จะแก้ปัญหา แต่คำอธิบายประกอบอย่างใดอย่างหนึ่ง@OneToOne(fetch=FetchType.LAZY)หรือ@ManyToOne(fetch=FetchType.LAZY)ดูเหมือนจะไม่ทำงาน ทั้งฉันได้รับข้อยกเว้นหรือไม่พวกเขาจะไม่ถูกแทนที่ด้วยวัตถุพร็อกซีและทำให้ขี้เกียจ ความคิดใดที่ฉันจะทำให้มันทำงานได้? โปรดทราบว่าฉันไม่ได้ใช้persistence.xmlเพื่อกำหนดความสัมพันธ์หรือรายละเอียดการกำหนดค่าทุกอย่างจะทำในรหัสจาวา

26
เคยมีเวลาบ้างไหมที่ใช้ความสัมพันธ์แบบ 1: 1 กับฐานข้อมูล
ฉันคิดถึงวันธรรมดาในการทำให้เป็นมาตรฐานและมันเกิดขึ้นกับฉันฉันไม่สามารถนึกถึงเวลาที่ควรมีความสัมพันธ์แบบ 1: 1 ในฐานข้อมูล Name:SSN? ฉันต้องการพวกเขาในตารางเดียวกัน PersonID:AddressID? อีกครั้งตารางเดียวกัน ฉันสามารถสร้างตัวอย่างที่มีค่าเป็นล้าน ๆ ได้คือ 1: มากหรือมาก: มาก (พร้อมโต๊ะกลางที่เหมาะสม) แต่ไม่เคยเป็น 1: 1 ฉันขาดอะไรที่ชัดเจนหรือไม่

8
ตรวจสอบว่า OneToOneField ไม่มีใน Django
ฉันมีสองรุ่นดังนี้: class Type1Profile(models.Model): user = models.OneToOneField(User, unique=True) ... class Type2Profile(models.Model): user = models.OneToOneField(User, unique=True) ... ฉันต้องทำอะไรบางอย่างหากผู้ใช้มีโปรไฟล์ Type1 หรือ Type2: if request.user.type1profile != None: # do something elif request.user.type2profile != None: # do something else else: # do something else แต่สำหรับผู้ใช้ที่ไม่มีโปรไฟล์ type1 หรือ type2 การรันโค้ดแบบนี้จะทำให้เกิดข้อผิดพลาดต่อไปนี้: Type1Profile matching query does not exist. …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.