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

Java Persistence API (JPA) เป็นข้อกำหนดคุณสมบัติ Java สำหรับการเข้าถึงการคงอยู่และการจัดการข้อมูลระหว่างวัตถุ / คลาส Java และฐานข้อมูลเชิงสัมพันธ์ เป็นส่วนหนึ่งของข้อกำหนด EJB 3.0 และเป็นแนวทางมาตรฐานอุตสาหกรรมสำหรับ Object to Relational Mapping (ORM)

4
@Column ไม่ได้รับอนุญาตในคุณสมบัติ @ManyToOne
ฉันมีเอนทิตี JPA ที่มีคุณสมบัติตั้งเป็น @ManyToOne @Column(name="LicenseeFK") private Licensee licensee; แต่เมื่อฉันปรับใช้บน JBoss 6 แอปพลิเคชันแสดงข้อผิดพลาดว่า: org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property ฉันใช้ Hibernate 3.5 เป็นการใช้งาน JPA 2.0 ฉันควรใช้อะไรในการอ้างอิงคอลัมน์ Foreign Key

18
ลำดับ JPA ไฮเบอร์เนต (ไม่ใช่รหัส)
มันเป็นไปได้ที่จะใช้ลำดับ DB สำหรับคอลัมน์บางอย่างที่ไม่ได้ระบุ / ไม่ได้เป็นส่วนหนึ่งของตัวระบุคอมโพสิต ? ฉันใช้ไฮเบอร์เนตเป็นผู้ให้บริการ jpa และฉันมีตารางที่มีคอลัมน์บางคอลัมน์ที่สร้างค่า (โดยใช้ลำดับ) แม้ว่าพวกเขาจะไม่ได้เป็นส่วนหนึ่งของตัวระบุ สิ่งที่ฉันต้องการคือการใช้ลำดับเพื่อสร้างค่าใหม่สำหรับเอนทิตีที่คอลัมน์สำหรับลำดับไม่ได้เป็น(ส่วนหนึ่ง) คีย์หลัก: @Entity @Table(name = "MyTable") public class MyEntity { //... @Id //... etc public Long getId() { return id; } //note NO @Id here! but this doesn't work... @GeneratedValue(strategy = GenerationType.AUTO, generator = "myGen") @SequenceGenerator(name = "myGen", sequenceName …
138 java  hibernate  jpa  sequence 

17
Spring boot - ไม่ใช่ประเภทที่มีการจัดการ
ฉันใช้ Spring boot + JPA และมีปัญหาขณะเริ่มบริการ Caused by: java.lang.IllegalArgumentException: Not an managed type: class com.nervytech.dialer.domain.PhoneSettings at org.hibernate.jpa.internal.metamodel.MetamodelImpl.managedType(MetamodelImpl.java:219) at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.<init>(JpaMetamodelEntityInformation.java:68) at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getMetadata(JpaEntityInformationSupport.java:65) at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:145) at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:89) at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:69) at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:177) at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:239) at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:225) at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1625) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562) นี่คือไฟล์ Application.java @Configuration @ComponentScan @EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class }) @SpringBootApplication public …

20
JPA getSingleResult () หรือ null
ฉันมีinsertOrUpdateวิธีการแทรกEntityเมื่อไม่มีหรืออัปเดตหากมี เพื่อเปิดใช้งานนี้ฉันต้องfindByIdAndForeignKeyถ้ามันกลับมาnullแทรกถ้าไม่แล้วอัปเดต ปัญหาคือฉันจะตรวจสอบว่ามีอยู่ได้อย่างไร? getSingleResultดังนั้นผมจึงพยายาม แต่มันก็มีข้อยกเว้นถ้า public Profile findByUserNameAndPropertyName(String userName, String propertyName) { String namedQuery = Profile.class.getSimpleName() + ".findByUserNameAndPropertyName"; Query query = entityManager.createNamedQuery(namedQuery); query.setParameter("name", userName); query.setParameter("propName", propertyName); Object result = query.getSingleResult(); if (result == null) return null; return (Profile) result; } แต่พ่นgetSingleResultException ขอบคุณ
136 java  jpa 

11
JPA CascadeType.ALL ไม่ได้ลบเด็กกำพร้า
ฉันมีปัญหาในการลบโหนด orphan โดยใช้ JPA ด้วยการแมปต่อไปนี้ @OneToMany (cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "owner") private List<Bikes> bikes; ฉันมีปัญหาของบทบาทที่ถูกทอดทิ้งซึ่งห้อยอยู่รอบ ๆ ฐานข้อมูล ฉันสามารถใช้org.hibernate.annotations.Cascadeแท็กเฉพาะไฮเบอร์เนตคำอธิบายประกอบได้ แต่เห็นได้ชัดว่าฉันไม่ต้องการผูกโซลูชันของฉันเข้ากับการใช้งานไฮเบอร์เนต แก้ไข : ดูเหมือนว่า JPA 2.0 จะรองรับสิ่งนี้ด้วย
136 java  hibernate  orm  jpa  jpa-2.0 

25
คำอธิบายประกอบไฮเบอร์เนต - การเข้าถึงฟิลด์หรือคุณสมบัติใดดีกว่ากัน
คำถามนี้เป็นคำถามที่ค่อนข้างที่เกี่ยวข้องกับHibernate หมายเหตุตำแหน่งคำถาม แต่อยากรู้ว่าอันไหนดีกว่ากัน ? เข้าถึงผ่านคุณสมบัติหรือเข้าถึงผ่านช่อง? ข้อดีข้อเสียของแต่ละอย่างเป็นอย่างไร?
135 java  hibernate  orm  jpa  annotations 

11
Kotlin กับ JPA: นรกตัวสร้างเริ่มต้น
ตามที่ JPA ต้องการ@Entityคลาสควรมีคอนสตรัคเตอร์เริ่มต้น (ไม่ใช่อาร์กิวเมนต์) เพื่อสร้างอินสแตนซ์อ็อบเจ็กต์เมื่อดึงข้อมูลจากฐานข้อมูล ใน Kotlin คุณสมบัติสะดวกมากที่จะประกาศภายในตัวสร้างหลักดังตัวอย่างต่อไปนี้: class Person(val name: String, val age: Int) { /* ... */ } แต่เมื่อคอนสตรัคเตอร์ที่ไม่ใช่อาร์กิวเมนต์ถูกประกาศเป็นตัวสร้างรองจะต้องมีการส่งผ่านค่าสำหรับตัวสร้างหลักดังนั้นจึงจำเป็นต้องมีค่าที่ถูกต้องสำหรับพวกเขาเช่นที่นี่: @Entity class Person(val name: String, val age: Int) { private constructor(): this("", 0) } ในกรณีที่คุณสมบัติมีบางประเภทที่ซับซ้อนมากกว่า just StringและIntและไม่เป็นโมฆะมันดูไม่ดีเลยที่จะระบุค่าสำหรับพวกเขาโดยเฉพาะอย่างยิ่งเมื่อมีโค้ดจำนวนมากในตัวสร้างและinitบล็อกหลักและเมื่อมีการใช้พารามิเตอร์ - - เมื่อพวกเขาจะถูกกำหนดใหม่โดยการสะท้อนรหัสส่วนใหญ่จะถูกเรียกใช้งานอีกครั้ง ยิ่งไปกว่านั้นval-properties ไม่สามารถกำหนดใหม่ได้หลังจากตัวสร้างดำเนินการดังนั้นความไม่เปลี่ยนรูปจึงหายไปด้วย คำถามคือ: โค้ด Kotlin สามารถปรับให้เข้ากับ JPA ได้อย่างไรโดยไม่ต้องทำซ้ำรหัสโดยเลือกค่าเริ่มต้น "magic" …

3
การแม็พตารางการเชื่อมโยงแบบกลุ่มต่อกลุ่มด้วยคอลัมน์พิเศษ
ฐานข้อมูลของฉันมี 3 ตาราง: เอนทิตีผู้ใช้และบริการมีความสัมพันธ์แบบกลุ่มต่อกลุ่มและเข้าร่วมกับตาราง SERVICE_USER ดังนี้: ผู้ใช้ - SERVICE_USER - บริการ ตาราง SERVICE_USER มีคอลัมน์ BLOCKED เพิ่มเติม วิธีใดที่ดีที่สุดในการทำแผนที่ดังกล่าว นี่คือคลาสเอนทิตีของฉัน @Entity @Table(name = "USERS") public class User implements java.io.Serializable { private String userid; private String email; @Id @Column(name = "USERID", unique = true, nullable = false,) public String getUserid() { return this.userid; …

2
ความแตกต่างระหว่าง Save และ saveAndFlush ใน Spring data jpa
ฉันพยายามเรียนรู้ข้อมูลสปริง JPA โดยทดสอบการทำงานของ CRUD ผ่านทางJpaRepository. ฉันเจอสองวิธีsaveและsaveAndFlush. ฉันไม่เข้าใจความแตกต่างระหว่างสองสิ่งนี้ ในการโทรsaveการเปลี่ยนแปลงของฉันกำลังได้รับการบันทึกลงในฐานข้อมูลดังนั้นการใช้saveAndFlushไฟล์.

26
ไฮเบอร์เนต:“ ฟิลด์ 'id' ไม่มีค่าเริ่มต้น”
ฉันกำลังเผชิญกับสิ่งที่ฉันคิดว่าเป็นปัญหาง่ายๆกับ Hibernate แต่ไม่สามารถแก้ไขได้ (ฟอรัม Hibernate ไม่สามารถเข้าถึงได้อย่างแน่นอนไม่ช่วยอะไร) ฉันมีคลาสง่ายๆที่ฉันอยากจะเรียนต่อ แต่ได้รับ: SEVERE: Field 'id' doesn't have a default value Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not insert: [hibtest.model.Mensagem] at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91) [ a bunch more ] Caused by: java.sql.SQLException: Field 'id' doesn't have a default value [ a bunch more ] รหัสที่เกี่ยวข้องสำหรับคลาสที่คงอยู่คือ: …


1
คุณสมบัติ spring.jpa.hibernate.ddl-auto ทำงานอย่างไรใน Spring
ฉันกำลังทำงานกับโปรเจ็กต์ Spring boot ของฉันและสังเกตเห็นว่าบางครั้งมีข้อผิดพลาดการหมดเวลาการเชื่อมต่อไปยังฐานข้อมูลของฉันบนเซิร์ฟเวอร์อื่น (SQL Server) สิ่งนี้เกิดขึ้นเป็นพิเศษเมื่อฉันพยายามย้ายสคริปต์บางอย่างด้วยFlyWayแต่มันใช้งานได้หลังจากพยายามหลายครั้ง จากนั้นฉันสังเกตว่าฉันไม่ได้ระบุ spring.jpa.hibernate.ddl-autoในไฟล์คุณสมบัติของฉัน ฉันได้ทำการวิจัยและพบว่ามีการแนะนำให้เพิ่ม spring.jpa.hibernate.ddl-auto= create-dropการพัฒนา และเปลี่ยนเป็น: spring.jpa.hibernate.ddl-auto= noneในการผลิต แต่ฉันไม่เข้าใจจริงๆว่ามันทำงานอย่างไรและไฮเบอร์เนตสร้างสคีมาฐานข้อมูลโดยใช้create-dropหรือnoneค่าได้อย่างไร คุณช่วยอธิบายในทางเทคนิคได้ไหมว่ามันทำงานอย่างไรและคำแนะนำสำหรับการใช้คุณสมบัตินี้ในการพัฒนาและบนเซิร์ฟเวอร์ที่ใช้งานจริงคืออะไร ขอบคุณ

3
Spring Data JPA แตกต่างจาก Hibernate สำหรับโครงการขนาดใหญ่อย่างไร
ฉันมีช่วงเวลาที่ยากลำบากในการตัดสินใจว่าควรใช้ Hibernate สำหรับโปรเจ็กต์ใหม่หรือไม่หรือทำให้เท้าเปียกด้วย JPA และการนำ Spring Data มาใช้ Spring Data framework มีไว้สำหรับโครงการขนาดใหญ่หรือโครงการขนาดเล็กที่มีข้อกำหนดการสืบค้นเพียงเล็กน้อยหรือไม่ ในขณะที่ฉันเห็นข้อได้เปรียบในการลดโค้ดโดยใช้@Queryคำอธิบายประกอบคุณจะทำอย่างไรสำหรับการสืบค้นแบบไดนามิก ถ้าคุณต้องการใช้เมธอด save () ที่ค่อนข้างซับซ้อนล่ะ? เอกสารระบุว่าให้สร้างอินเทอร์เฟซแบบกำหนดเองและการใช้งานที่ที่เก็บหลักของคุณใช้ แต่ถ้าคุณต้องการเข้าถึงวิธีการขั้นสูงใด ๆ บนที่เก็บ crud เองล่ะ? ที่เก็บ crud ใช้ที่เก็บแบบกำหนดเองไม่ใช่ในทางอื่น ดูเหมือนเป็นการออกแบบที่แปลก ฉันไม่แน่ใจมากว่าเฟรมเวิร์กนี้จะตอบสนองความท้าทายของแอพพลิเคชั่นที่ซับซ้อนและมีขนาดใหญ่ได้หรือไม่ ฉันไม่เคยประสบปัญหามากมายเกี่ยวกับ Hibernate และฉันกำลังพิจารณาที่จะยึดติดกับความน่าเชื่อถือแบบเก่ามากกว่าที่จะใช้ Spring Data JPA ฉันควรทำอย่างไรดี? ฉันจะต้องเผชิญกับภาวะแทรกซ้อนและค่าใช้จ่ายที่คาดไม่ถึงอะไรบ้างหากใช้ Spring Data JPA

2
"ฝั่งเจ้าของ" ในการแมป ORM คืออะไร
สิ่งที่ว่าไม่ด้านการเป็นเจ้าของหมายถึง? อะไรคือคำอธิบายพร้อมตัวอย่างการทำแผนที่ ( หนึ่งต่อหลายคนหนึ่งต่อหนึ่งหลายคนต่อหนึ่ง ) ข้อความต่อไปนี้เป็นข้อความที่ตัดตอนมาจากคำอธิบายของ@OneToOneในเอกสาร Java EE 6 คุณสามารถดูแนวคิดที่เป็นเจ้าของได้ กำหนดการเชื่อมโยงมูลค่าเดียวกับเอนทิตีอื่นที่มีหลายหลากแบบหนึ่งต่อหนึ่ง โดยปกติแล้วไม่จำเป็นต้องระบุเอนทิตีเป้าหมายที่เกี่ยวข้องอย่างชัดเจนเนื่องจากโดยปกติแล้วจะสามารถอนุมานได้จากประเภทของวัตถุที่อ้างอิง หากความสัมพันธ์เป็นแบบสองทิศทางฝ่ายที่ไม่ได้เป็นเจ้าของจะต้องใช้องค์ประกอบ mappedBy ของคำอธิบายประกอบ OneToOne เพื่อระบุฟิลด์ความสัมพันธ์หรือคุณสมบัติของฝั่งเจ้าของ
129 java  hibernate  orm  jpa  mapping 

7
ฉันควรใช้คำอธิบายประกอบแบบใด: @IdClass หรือ @EmbeddedId
ข้อกำหนดJPA(Java Persistence API) มี 2 วิธีในการระบุคีย์คอมโพสิตของเอนทิตี: @IdClassและ@EmbeddedId. ผมใช้ทั้งคำอธิบายประกอบในหน่วยงานแมปของฉัน JPAแต่มันจะเปิดออกเพื่อจะรับประทานอาหารขนาดใหญ่ให้กับผู้ที่ไม่คุ้นเคยกับ ฉันต้องการใช้วิธีเดียวในการระบุคีย์ผสมเท่านั้น อันไหนดีที่สุด? ทำไม?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.