คำถามติดแท็ก eclipselink

20
JPA hashCode () / เท่ากับ () ขึ้นเขียง
มีการบาง อภิปรายนี่เกี่ยวกับหน่วยงานและที่ JPA hashCode()/ equals()การดำเนินงานควรจะใช้สำหรับการเรียน JPA นิติบุคคล ส่วนใหญ่ (ถ้าไม่ใช่ทั้งหมด) ขึ้นอยู่กับ Hibernate แต่ฉันต้องการจะพูดคุยเกี่ยวกับ JPA-Implement-neutrally (ฉันใช้ EclipseLink) การนำไปใช้งานที่เป็นไปได้ทั้งหมดนั้นมีข้อดีและข้อเสียของตัวเองเกี่ยวกับ: hashCode()/ ความequals()สอดคล้องตามสัญญา(ไม่เปลี่ยนแปลง) สำหรับList/ Setการดำเนินงาน ไม่ว่าจะเป็นวัตถุที่เหมือนกัน (เช่นจากเซสชันที่แตกต่างกันพร็อกซีไดนามิกจากโครงสร้างข้อมูลที่โหลดแบบ lazily) สามารถตรวจพบได้ ไม่ว่าเอนทิตีจะทำงานอย่างถูกต้องในสถานะแยกออก (หรือไม่คงอยู่) เท่าที่ฉันเห็นมีสามตัวเลือก : อย่าแทนที่พวกเขา; พึ่งพาObject.equals()และObject.hashCode() hashCode()/ equals()งาน ไม่สามารถระบุวัตถุที่เหมือนกันปัญหาเกี่ยวกับพร็อกซีแบบไดนามิก ไม่มีปัญหากับเอนทิตี้เดี่ยว แทนที่พวกเขาขึ้นอยู่กับคีย์หลัก hashCode()/ equals()ถูกทำลาย ตัวตนที่ถูกต้อง (สำหรับองค์กรที่มีการจัดการทั้งหมด) ปัญหาเกี่ยวกับหน่วยงานเดี่ยว แทนที่พวกเขาตามBusiness-Id (เขตข้อมูลคีย์ที่ไม่ใช่หลัก; สิ่งที่เกี่ยวกับกุญแจต่างประเทศ?) hashCode()/ equals()ถูกทำลาย ตัวตนที่ถูกต้อง (สำหรับองค์กรที่มีการจัดการทั้งหมด) ไม่มีปัญหากับเอนทิตี้เดี่ยว คำถามของฉันคือ: ฉันพลาดตัวเลือกและ …

4
โปรดอธิบายเกี่ยวกับ insertable = false และ updatable = false ในการอ้างอิงถึงคำอธิบายประกอบ JPA @Column
หากมีการเพิ่มความคิดเห็นของเขตข้อมูลinsertable=false, updatable=falseหมายความว่าคุณไม่สามารถแทรกค่าหรือเปลี่ยนค่าที่มีอยู่ได้ใช่หรือไม่ ทำไมคุณต้องการทำเช่นนั้น? @Entity public class Person { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @OneToMany(mappedBy="person", cascade=CascadeType.ALL) private List<Address> addresses; } @Entity public class Address { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @ManyToOne @JoinColumn(name="ADDRESS_FK") @Column(insertable=false, updatable=false) private Person person; }

8
พารามิเตอร์ใน like clause JPQL
ฉันพยายามเขียนแบบสอบถาม JPQL ด้วยประโยค like: LIKE '%:code%' ฉันต้องการรหัส = 4 และค้นหา 455 554 646 ... ฉันไม่สามารถผ่านไปได้ :code = '%value%' namedQuery.setParameter("%" + this.value + "%"); เพราะในที่อื่นฉัน:valueไม่จำเป็นต้องพัน%อักขระ ความช่วยเหลือใด ๆ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.