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

Hibernate เป็นไลบรารีการทำแผนที่วัตถุเชิงสัมพันธ์ (ORM) สำหรับภาษาจาวาที่ช่วยให้นักพัฒนาสามารถใช้โมเดลโดเมนแบบ POJO ในแอปพลิเคชันของพวกเขาในวิธีที่ขยายได้ดีกว่าการทำแผนที่วัตถุ / เชิงสัมพันธ์

5
ไฮเบอร์เนต openSession () เทียบกับ getCurrentSession ()
ฉันมีคำถามเกี่ยวกับการใช้ Hibernate ในเว็บแอปพลิเคชัน JSP ควรมีค่าสำหรับhibernate.current_session_context_classอะไร? แล้วควรใช้ข้อความใดต่อไปนี้? และทำไม? Session s = HibernateUtil.getSessionFactory().openSession(); Session s = HibernateUtil.getSessionFactory().getCurrentSession() สุดท้าย "หนึ่งเซสชันต่อเว็บแอป" หรือ "หนึ่งเซสชันต่อคำขอ" อันไหนดีกว่ากัน
130 java  hibernate 

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 

13
วิธีการติดตั้งเครื่องมือไฮเบอร์เนตใน Eclipse
วิธีที่เหมาะสมในการติดตั้งเครื่องมือไฮเบอร์เนตใน Eclipse เป็นปลั๊กอินคืออะไร? เว็บไซต์ไฮเบอร์เนตไม่ได้จริงๆให้คำแนะนำใด ๆ ดูที่ไบนารีเครื่องมือไฮเบอร์เนตHibernateTools-3.2.4.Beta1-R200810311334.zipปรากฏว่าฉันสามารถแตกไฟล์นี้ในไดเรกทอรีคราสของฉันได้ ฉันเพิ่งเปิดเครื่องรูดมันในไดเรกทอรี eclipse ของฉัน? ดูเหมือนว่าแฮ็คจะทำการติดตั้ง

17
ข้อผิดพลาดไฮเบอร์เนต - QuerySyntaxException: ผู้ใช้ไม่ได้แมป [จากผู้ใช้]
ฉันพยายามดึงรายชื่อผู้ใช้ทั้งหมดจากตาราง "ผู้ใช้" และได้รับข้อผิดพลาดต่อไปนี้: org.hibernate.hql.internal.ast.QuerySyntaxException: users is not mapped [from users] org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:180) org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110) org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:93) นี่คือรหัสที่ฉันเขียนเพื่อเพิ่ม / รับผู้ใช้: public List<User> getUsers() { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); List<User> result = (List<User>) session.createQuery("from users").list(); session.getTransaction().commit(); return result; } public void addUser(User user) { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); session.save(user); session.getTransaction().commit(); } public void …
126 java  hibernate 

8
การตั้งค่าการพึ่งพา maven สำหรับ SQL Server
ฉันกำลังพัฒนาพอร์ตเล็ตที่ฉันมีสิทธิ์ไฮเบอร์เนตเข้าถึงฐานข้อมูล SQL Server ฉันตั้งค่าการอ้างอิง mavenสำหรับมันและพยายามค้นหาตัวเชื่อมต่อ SQL Server ด้วยวิธีเดียวกับที่ฉันรู้ว่ามี MySql การค้นหาโดย Google ของฉันยังให้เฉพาะ Mysql เท่านั้นหากฉันค้นหาตัวเชื่อมต่อ SQL Server ค่าการพึ่งพา maven ที่ถูกต้องคืออะไร?

10
Spring Boot + JPA: ไม่สนใจคำอธิบายประกอบชื่อคอลัมน์
ฉันมีโปรแกรมฤดูใบไม้ผลิ Boot spring-boot-starter-data-jpaกับการพึ่งพา คลาสเอนทิตีของฉันมีคำอธิบายประกอบคอลัมน์ที่มีชื่อคอลัมน์ ตัวอย่างเช่น: @Column(name="TestName") private String testName; SQL ที่สร้างขึ้นโดยสร้างtest_nameเป็นชื่อคอลัมน์ หลังจากค้นหาวิธีแก้ปัญหาฉันพบว่าspring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategyแก้ไขปัญหาได้แล้ว (ชื่อคอลัมน์นำมาจากคำอธิบายประกอบคอลัมน์) อย่างไรก็ตามคำถามของฉันคือเหตุใดโดยไม่ตั้งชื่อ _strategy เป็นEJB3NamingStrategyJPA จึงไม่สนใจคำอธิบายประกอบคอลัมน์ บางทีภาษาไฮเบอร์เนตอาจมีส่วนเกี่ยวข้องกับมัน? ฉันกำลังเชื่อมต่อกับ MS SQL 2014 Express และบันทึกของฉันประกอบด้วย: Unknown Microsoft SQL Server major version [12] using SQL Server 2000 dialect Using dialect: org.hibernate.dialect.SQLServerDialect

8
คำอธิบายประกอบไฮเบอร์เนตที่เหมาะสมสำหรับไบต์ []
ฉันมีแอปพลิเคชันที่ใช้คำอธิบายประกอบไฮเบอร์เนต 3.1 และ JPA มีออบเจ็กต์สองสามรายการที่มีแอตทริบิวต์ไบต์ [] (ขนาด 1k - 200k) มันใช้คำอธิบายประกอบ JPA @Lob และ hibernate 3.1 สามารถอ่านสิ่งเหล่านี้ได้ดีในฐานข้อมูลหลักทั้งหมด - ดูเหมือนว่าจะซ่อนลักษณะเฉพาะของผู้ขาย JDBC Blob (ตามที่ควรทำ) @Entity public class ConfigAttribute { @Lob public byte[] getValueBuffer() { return m_valueBuffer; } } เราต้องอัปเกรดเป็น 3.5 เมื่อเราพบว่าไฮเบอร์เนต 3.5 หยุดพัก (และจะไม่แก้ไข)ชุดคำอธิบายประกอบนี้ใน postgresql (โดยไม่มีวิธีแก้ปัญหา) ฉันยังไม่พบการแก้ไขที่ชัดเจน แต่ฉันสังเกตเห็นว่าถ้าฉันเพิ่งลบ @Lob ออกมันจะใช้ไบต์ประเภท postgresql (ซึ่งใช้ได้ …

4
ความแตกต่างระหว่าง persist () และ merge () ใน JPA และ Hibernate คืออะไร?
ความแตกต่างระหว่าง persist () และ merge () ใน Hibernate คืออะไร? persist() สามารถสร้างแบบสอบถาม UPDATE & INSERT เช่น: SessionFactory sef = cfg.buildSessionFactory(); Session session = sef.openSession(); A a=new A(); session.persist(a); a.setName("Mario"); session.flush(); ในกรณีนี้จะมีการสร้างแบบสอบถามดังนี้: Hibernate: insert into A (NAME, ID) values (?, ?) Hibernate: update A set NAME=? where ID=? ดังนั้นpersist()วิธีการสามารถสร้างส่วนแทรกและการอัปเดต ขณะนี้มีmerge(): SessionFactory sef …
119 java  hibernate  jpa  orm  entity 

6
Hibernate, @SequenceGenerator และการจัดสรรขนาด
เราทุกคนรู้ถึงพฤติกรรมเริ่มต้นของ Hibernate เมื่อใช้@SequenceGenerator- มันจะเพิ่มลำดับฐานข้อมูลจริงทีละค่านี้คูณด้วย 50 (ค่าเริ่มต้นallocationSize) - จากนั้นใช้ค่านี้เป็น ID เอนทิตี นี่เป็นพฤติกรรมที่ไม่ถูกต้องและขัดแย้งกับข้อกำหนดที่ระบุว่า: จัดสรรขนาด - (ไม่บังคับ) จำนวนเงินที่จะเพิ่มขึ้นเมื่อจัดสรรหมายเลขลำดับจากลำดับ เพื่อความชัดเจน: ฉันไม่กังวลเกี่ยวกับช่องว่างระหว่าง ID ที่สร้างขึ้น ฉันสนใจ ID ที่ไม่สอดคล้องกับลำดับฐานข้อมูลพื้นฐาน ตัวอย่างเช่น: แอปพลิเคชันอื่น ๆ (เช่นใช้ JDBC ธรรมดา) อาจต้องการแทรกแถวใหม่ภายใต้ ID ที่ได้รับจากลำดับ - แต่ค่าเหล่านั้นทั้งหมดอาจถูกใช้โดย Hibernate! ความบ้าคลั่ง มีใครทราบวิธีแก้ปัญหานี้allocationSize=1บ้างไหม(โดยไม่ต้องตั้งค่าและทำให้ประสิทธิภาพลดลง) แก้ไข: เพื่อให้ทุกอย่างชัดเจน ถ้าระเบียนสุดท้ายแทรกมี ID = 1ค่าใช้แล้ว HB 51, 52, 53...สำหรับองค์กรใหม่ แต่ในเวลาเดียวกัน: 2ค่าลำดับในฐานข้อมูลของจะถูกตั้งค่า ซึ่งสามารถนำไปสู่ข้อผิดพลาดได้อย่างง่ายดายเมื่อแอปพลิเคชันอื่นกำลังใช้ลำดับนั้น ในทางกลับกัน: …
117 java  hibernate  jpa  hilo 

8
Hibernate Criteria ส่งคืนเด็กหลายครั้งด้วย FetchType.EAGER
ฉันมีOrderคลาสที่มีรายชื่อOrderTransactionsและฉันแมปด้วยการแมป Hibernate แบบหนึ่งต่อหลายดังนี้: @OneToMany(targetEntity = OrderTransaction.class, cascade = CascadeType.ALL) public List<OrderTransaction> getOrderTransactions() { return orderTransactions; } เหล่านี้Orderยังมีฟิลด์orderStatusซึ่งใช้สำหรับการกรองด้วยเกณฑ์ต่อไปนี้: public List<Order> getOrderForProduct(OrderFilter orderFilter) { Criteria criteria = getHibernateSession() .createCriteria(Order.class) .add(Restrictions.in("orderStatus", orderFilter.getStatusesToShow())); return criteria.list(); } สิ่งนี้ได้ผลและผลลัพธ์ก็เป็นไปตามที่คาดหวัง ตอนนี้ที่นี่เป็นคำถามของฉัน : ทำไมเมื่อฉันตั้งดึงข้อมูลประเภทอย่างชัดเจนที่จะEAGERทำOrders ปรากฏหลายครั้งในรายการผลลัพธ์? @OneToMany(targetEntity = OrderTransaction.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL) public List<OrderTransaction> getOrderTransactions() { …
115 java  hibernate 


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