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

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

7
ปัญหาไฮเบอร์เนต -“ การใช้ @OneToMany หรือ @ManyToMany กำหนดเป้าหมายคลาสที่ไม่ได้แมป”
ฉันพบว่าเท้าของฉันมีคำอธิบายประกอบไฮเบอร์เนตและฉันประสบปัญหาฉันหวังว่าจะมีคนช่วยได้ ฉันมี 2 เอนทิตีมาตราและขอบเขต ส่วนนี้มีสมาชิกคลาส List ดังนั้นความสัมพันธ์แบบหนึ่งต่อกลุ่ม เมื่อฉันเรียกใช้การทดสอบหน่วยฉันได้รับข้อยกเว้นนี้: การใช้ @OneToMany หรือ @ManyToMany กำหนดเป้าหมายคลาสที่ไม่ได้แมป: com.xxx.domain.Section.scopeTopic [com.xxx.domain.ScopeTopic] ฉันจะถือว่าข้อผิดพลาดหมายความว่าเอนทิตี ScopeTopic ของฉันไม่ได้แมปกับตาราง? ฉันไม่เห็นว่าฉันทำผิด คลาสเอนทิตีมีดังนี้ @Entity public class Section { private Long id; private List<ScopeTopic> scopeTopics; public Section() {} @Id public Long getId() { return id; } public void setId(Long id) { this.id = id; …
114 hibernate  jpa 

8
JPA eager fetch ไม่เข้าร่วม
การควบคุมกลยุทธ์การดึงข้อมูลของ JPA คืออะไร? ฉันไม่สามารถตรวจพบความแตกต่างระหว่างความกระตือรือร้นและขี้เกียจ ในทั้งสองกรณี JPA / Hibernate จะไม่เข้าร่วมความสัมพันธ์แบบกลุ่มต่อหนึ่งโดยอัตโนมัติ ตัวอย่าง: บุคคลมีที่อยู่เดียว ที่อยู่อาจเป็นของคนจำนวนมาก คลาสเอนทิตีที่มีคำอธิบายประกอบ JPA มีลักษณะดังนี้: @Entity public class Person { @Id public Integer id; public String name; @ManyToOne(fetch=FetchType.LAZY or EAGER) public Address address; } @Entity public class Address { @Id public Integer id; public String name; } ถ้าฉันใช้แบบสอบถาม JPA: select …
113 java  hibernate  jpa  join 

9
% Like% Query ในฤดูใบไม้ผลิ JpaRepository
ฉันต้องการเขียนข้อความค้นหาที่คล้ายกันJpaRepositoryแต่ไม่ได้ส่งคืนอะไรเลย: LIKE '%place%'- ไม่ทำงาน LIKE 'place' ทำงานได้อย่างสมบูรณ์ นี่คือรหัสของฉัน: @Repository("registerUserRepository") public interface RegisterUserRepository extendsJpaRepository<Registration,Long> { @Query("Select c from Registration c where c.place like :place") List<Registration> findByPlaceContaining(@Param("place")String place); }

3
การใช้ flush () อย่างถูกต้องใน JPA / Hibernate
ฉันกำลังรวบรวมข้อมูลเกี่ยวกับวิธีการ flush () แต่ยังไม่ชัดเจนว่าควรใช้เมื่อใดและจะใช้อย่างไรให้ถูกต้อง จากสิ่งที่ฉันอ่านความเข้าใจของฉันคือเนื้อหาของบริบทการคงอยู่จะถูกซิงโครไนซ์กับฐานข้อมูลนั่นคือการออกคำสั่งที่โดดเด่นหรือการรีเฟรชข้อมูลเอนทิตี ตอนนี้ฉันได้ติดตามสถานการณ์ที่มีสองเอนทิตีAและB(ในความสัมพันธ์แบบหนึ่งต่อหนึ่ง แต่ไม่ได้บังคับใช้หรือจำลองโดย JPA) Aมี PK recordIdคอมโพสิตซึ่งตั้งด้วยตนเองและยังมีสนาม นี้recordIdควรจะเขียนกิจการเป็นต่างประเทศที่สำคัญในการB AฉันกำลังบันทึกAและBในการทำธุรกรรมครั้งเดียว ปัญหาคือว่าค่าสร้างขึ้นโดยอัตโนมัติA.recordIdไม่ได้มีอยู่ในการทำธุรกรรมจนกว่าฉันโทรชัดเจนem.flush()หลังจากเรียกบนem.persist() A(ถ้าฉันมี IDENTITY PK ที่สร้างขึ้นโดยอัตโนมัติค่าจะได้รับการอัปเดตโดยตรงในเอนทิตี แต่นั่นไม่ใช่กรณีนี้) อาจem.flush()ก่อให้เกิดอันตรายใด ๆ เมื่อใช้ภายในธุรกรรมหรือไม่?

9
บริบทความคงอยู่คืออะไร?
ฉันยังใหม่กับโลก Java และ JPA ฉันเรียน JPA และเจอศัพท์ใหม่ ๆ มากมายเช่น Entity, persistence ขณะที่อ่านผมไม่สามารถเข้าใจความหมายที่แน่นอนสำหรับความคงทนบริบท ใครช่วยอธิบายเป็นฆราวาสง่ายๆ จะทำอย่างไรกับข้อมูลที่ใช้ใน@Entity? ตัวอย่างเช่นฉันพบว่าคำจำกัดความนี้ซับซ้อนเกินกว่าที่จะเข้าใจ: บริบทการคงอยู่คือชุดของเอนทิตีที่สำหรับเอกลักษณ์ถาวรใด ๆ จะมีอินสแตนซ์เอนทิตีที่ไม่ซ้ำกัน
111 java  jpa  orm  persistence 

5
CascadeType.REMOVE และ orphanRemoval ใน JPA ต่างกันอย่างไร
อะไรคือความแตกต่างระหว่าง @OneToMany(cascade=REMOVE, mappedBy="customer") public List<Order> getOrders() { ... } และ @OneToMany(mappedBy="customer", orphanRemoval="true") public List<Order> getOrders() { ... } ตัวอย่างนี้มาจาก Java EE Tutorial แต่ฉันยังไม่เข้าใจรายละเอียด

11
ฉันต้องการองค์ประกอบ <class> ใน persistence.xml หรือไม่?
ฉันมีไฟล์ persistance.xml ที่ง่ายมาก: &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"&gt; &lt;persistence-unit name="eventractor" transaction-type="RESOURCE_LOCAL"&gt; &lt;class&gt;pl.michalmech.eventractor.domain.User&lt;/class&gt; &lt;class&gt;pl.michalmech.eventractor.domain.Address&lt;/class&gt; &lt;class&gt;pl.michalmech.eventractor.domain.City&lt;/class&gt; &lt;class&gt;pl.michalmech.eventractor.domain.Country&lt;/class&gt; &lt;properties&gt; &lt;property name="hibernate.hbm2ddl.auto" value="validate" /&gt; &lt;property name="hibernate.show_sql" value="true" /&gt; &lt;/properties&gt; &lt;/persistence-unit&gt; &lt;/persistence&gt; และมันได้ผล แต่เมื่อฉันลบ&lt;class&gt;แอปพลิเคชันองค์ประกอบไม่เห็นเอนทิตี (ทุกคลาสมีคำอธิบายประกอบ@Entity) มีกลไกอัตโนมัติในการสแกนหา@Entityชั้นเรียนหรือไม่?
110 java  hibernate  orm  jpa  annotations 

4
วิธีสร้างและจัดการคีย์หลักแบบผสมใน JPA
ฉันต้องการมีเวอร์ชันจากการป้อนข้อมูลเดียวกัน กล่าวอีกนัยหนึ่งคือฉันต้องการทำรายการซ้ำกับหมายเลขเวอร์ชันอื่น id - Version จะเป็นคีย์หลัก นิติบุคคลควรมีลักษณะอย่างไร? ฉันจะทำซ้ำกับเวอร์ชันอื่นได้อย่างไร id Version ColumnA 1 0 Some data 1 1 Some Other data 2 0 Data 2. Entry 2 1 Data

9
เหตุใด Hibernate Open Session in View จึงถือเป็นการปฏิบัติที่ไม่ดี
และคุณใช้กลยุทธ์ทางเลือกประเภทใดในการหลีกเลี่ยง LazyLoadExceptions? ฉันเข้าใจว่าเซสชันที่เปิดอยู่ในมุมมองมีปัญหากับ: แอปพลิเคชั่นแบบเลเยอร์ที่ทำงานใน jvm ที่แตกต่างกัน การทำธุรกรรมจะเกิดขึ้นในตอนท้ายเท่านั้นและส่วนใหญ่คุณอาจต้องการผลลัพธ์มาก่อน แต่ถ้าคุณรู้ว่าแอปพลิเคชันของคุณทำงานบน vm เดียวทำไมไม่คลายความเจ็บปวดของคุณโดยใช้กลยุทธ์การดูเซสชันแบบเปิด

2
ประโยค JPQL IN: Java-Arrays (หรือ Lists, Sets ... )?
ฉันต้องการโหลดอ็อบเจ็กต์ทั้งหมดที่มีแท็กข้อความที่ตั้งค่าเป็นค่าใด ๆ จำนวนเล็กน้อย แต่โดยพลการจากฐานข้อมูลของเรา วิธีเชิงตรรกะในการดำเนินการนี้ใน SQL คือการสร้างอนุประโยค "IN" JPQL อนุญาตให้ใช้ IN แต่ดูเหมือนว่าต้องการให้ฉันระบุทุกพารามิเตอร์เป็น IN โดยตรง (เช่นใน "in (: in1,: in2,: in3)") มีวิธีบางอย่างในการระบุอาร์เรย์หรือรายการ (หรือคอนเทนเนอร์อื่น ๆ ) ที่ควรยกเลิกการควบคุมค่าของประโยค IN หรือไม่?
108 sql  orm  jpa  jpql  named-query 

14
สปริงบูตเริ่มต้นการเชื่อมต่อ H2 jdbc (และคอนโซล H2)
ฉันแค่พยายามดูเนื้อหาฐานข้อมูล H2 สำหรับฐานข้อมูล H2 แบบฝังซึ่ง spring-boot สร้างขึ้นเมื่อฉันไม่ได้ระบุอะไรใน application.properties และเริ่มต้นด้วย mvn spring: run ฉันสามารถเห็น hibernate JPA สร้างตาราง แต่ถ้าฉันพยายามเข้าถึงคอนโซล h2 ที่ URL ด้านล่างฐานข้อมูลไม่มีตาราง http://localhost:8080/console/ ฉันเห็นคำแนะนำเช่นนี้: ดูเนื้อหาของฐานข้อมูล H2 แบบฝังที่เริ่มต้นโดย Spring แต่ฉันไม่รู้ว่าจะใส่ XML ที่แนะนำในสปริงบูตได้ที่ไหนและแม้ว่าฉันจะทำฉันก็ไม่ต้องการให้ h2console พร้อมใช้งานอีกต่อไปเมื่อมีการกำหนดค่าฐานข้อมูลภายนอกดังนั้นจึงมีแนวโน้มที่ฉันจะต้องจัดการสิ่งนี้ ด้วยรหัสเงื่อนไขบางประเภท (หรืออาจจะอนุญาตให้สปริงจัดการโดยอัตโนมัติในกรณีที่ดีที่สุดที่ฉันรวม H2 เมื่อเปิดใช้งานโปรไฟล์ maven เท่านั้น) ใครมีโค้ดตัวอย่างที่แสดงวิธีทำให้คอนโซล H2 ทำงานในการบูต (และวิธีค้นหาว่าสตริงการเชื่อมต่อ jdbc ที่สปริงใช้คืออะไร)
108 java  spring  jpa  h2  spring-boot 

5
ฉันจะรับวัตถุเซสชันได้อย่างไรถ้าฉันมีผู้จัดการเอนทิตี
ฉันมี private EntityManager em; public List getAll(DetachedCriteria detachedCriteria) { return detachedCriteria.getExecutableCriteria("....").list(); } ฉันจะดึงข้อมูลเซสชันได้อย่างไรหากใช้เอนทิตีเมเนเจอร์หรือฉันจะรับผลลัพธ์จากเกณฑ์ที่แยกออกมาได้อย่างไร

11
วิธีจัดเก็บวันที่ / เวลาและการประทับเวลาในเขตเวลา UTC ด้วย JPA และ Hibernate
ฉันจะกำหนดค่า JPA / Hibernate ให้จัดเก็บวันที่ / เวลาในฐานข้อมูลเป็นเขตเวลา UTC (GMT) ได้อย่างไร พิจารณาเอนทิตี JPA ที่มีคำอธิบายประกอบนี้: public class Event { @Id public int id; @Temporal(TemporalType.TIMESTAMP) public java.util.Date date; } ถ้าเป็นวันที่ 2008-Feb-03 09:30 น. เวลามาตรฐานแปซิฟิก (PST) ฉันต้องการให้เวลา UTC ของปี 2008-Feb-03 17:30 น. เก็บไว้ในฐานข้อมูล ในทำนองเดียวกันเมื่อเรียกข้อมูลวันที่จากฐานข้อมูลฉันต้องการให้ตีความเป็น UTC ดังนั้นในกรณีนี้ 530pm คือ 530pm UTC เมื่อแสดงผลจะมีรูปแบบเป็น 9:30 น. PST

10
วิธีใส่คำอธิบายประกอบฟิลด์การเพิ่มอัตโนมัติ MYSQL ด้วยคำอธิบายประกอบ JPA
ตรงประเด็นปัญหาคือการบันทึก object Operator ลงใน MySQL DB ก่อนที่จะบันทึกฉันพยายามเลือกจากตารางนี้และมันใช้งานได้การเชื่อมต่อกับ db นี่คือวัตถุ Operator ของฉัน: @Entity public class Operator{ @Id @GeneratedValue private Long id; private String username; private String password; private Integer active; //Getters and setters... } ในการบันทึกฉันใช้วิธีEntityManagerของJPApersist นี่คือบันทึกบางส่วน: Hibernate: insert into Operator (active, password, username, id) values (?, ?, ?, ?) com.mysql.jdbc.JDBC4PreparedStatement@15724a0: insert …
106 java  mysql  orm  jpa  annotations 

4
วิธีแมปคุณสมบัติจากการคำนวณด้วย JPA และ Hibernate
Java bean ของฉันมีคุณสมบัติ childCount ที่พักแห่งนี้ไม่ได้แมปไปยังคอลัมน์ฐานข้อมูล แต่ควรคำนวณโดยฐานข้อมูลด้วยCOUNT()ฟังก์ชันที่ทำงานร่วมกับ Java bean ของฉันและลูกของมัน จะดียิ่งขึ้นถ้าคุณสมบัตินี้สามารถคำนวณได้ตามความต้องการ / "เกียจคร้าน" แต่ไม่ได้บังคับ ในกรณีที่เลวร้ายที่สุดฉันสามารถตั้งค่าคุณสมบัติของ bean นี้ด้วย HQL หรือ Criteria API แต่ฉันไม่ต้องการ @Formulaคำอธิบายประกอบไฮเบอร์เนตอาจช่วยได้ แต่ฉันแทบไม่พบเอกสารใด ๆ ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก ขอบคุณ.

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