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

Spring Data - JPA เป็นส่วนหนึ่งของโครงการ Spring Data umbrella ซึ่งทำให้ง่ายต่อการใช้งานที่เก็บข้อมูลที่ใช้ JPA

5
ความแตกต่างระหว่างอินเตอร์เฟส CrudRepository และ JpaRepository ใน Spring Data JPA คืออะไร
ความแตกต่างระหว่างคืออะไรCrudRepositoryและJpaRepositoryอินเตอร์เฟซในฤดูใบไม้ผลิข้อมูล JPA ? เมื่อฉันเห็นตัวอย่างบนเว็บฉันเห็นพวกมันอยู่ที่นั่นใช้แทนกันได้ ความแตกต่างระหว่างพวกเขาคืออะไร? ทำไมคุณต้องการใช้อีกอันหนึ่ง?

7
วิธีใช้ OrderBy กับ findAll ใน Spring Data
ฉันกำลังใช้ข้อมูลฤดูใบไม้ผลิและดูเหมือน DAO ของฉัน public interface StudentDAO extends JpaRepository<StudentEntity, Integer> { public findAllOrderByIdAsc(); // I want to use some thing like this } ในโค้ดด้านบนบรรทัดแสดงความคิดเห็นแสดงเจตนาของฉัน spring Data สามารถใช้ฟังก์ชั่น inbuilt เพื่อใช้วิธีการดังกล่าวเพื่อค้นหาระเบียนทั้งหมดในบางคอลัมน์ด้วย ASC / DESC ได้หรือไม่?

6
อะไรคือความแตกต่างระหว่าง Hibernate และ Spring Data JPA
อะไรคือความแตกต่างที่สำคัญระหว่าง Hibernate และ Spring Data JPA เมื่อใดที่เราไม่ควรใช้ Hibernate หรือ Spring Data JPA นอกจากนี้เมื่อใดที่เท็มเพลต Spring JDBC อาจทำงานได้ดีกว่า Hibernate / Spring Data JPA

9
ฉันจะอัพเดตเอนทิตีโดยใช้ spring-data-jpa ได้อย่างไร
คำถามก็บอกทุกอย่าง การใช้ JPAR ที่เก็บฉันจะอัพเดตเอนทิตีได้อย่างไร JPARepository มีเพียงวิธีการบันทึกซึ่งไม่ได้บอกฉันว่ามันสร้างหรืออัพเดทจริงหรือไม่ ตัวอย่างเช่นผมใส่วัตถุที่ง่ายต่อการใช้ฐานข้อมูลซึ่งมีสามช่อง: firstname, lastnameและage: @Entity public class User { private String firstname; private String lastname; //Setters and getters for age omitted, but they are the same as with firstname and lastname. private int age; @Column public String getFirstname() { return firstname; } public void setFirstname(String …

3
Spring CrudRepository findByInventoryIds (รายการ <Long> inventoryIdList) - เทียบเท่ากับ IN clause
ใน Spring CrudRepository เรามีการสนับสนุน "ในอนุประโยค" สำหรับฟิลด์หรือไม่? สิ่งที่คล้ายกับต่อไปนี้คืออะไร? findByInventoryIds(List&lt;Long&gt; inventoryIdList) หากการสนับสนุนดังกล่าวไม่สามารถใช้งานได้จะมีการพิจารณาตัวเลือกอะไรบ้าง คิวรีการยิงสำหรับแต่ละ id อาจไม่เหมาะสม

11
วิธีเพิ่มวิธีกำหนดเองไปยัง Spring Data JPA
ฉันกำลังดู JPA ของ Spring Data พิจารณาตัวอย่างด้านล่างที่ฉันจะได้รับ crud และฟังก์ชั่นการค้นหาทั้งหมดทำงานตามค่าเริ่มต้นและถ้าฉันต้องการปรับแต่งการค้นหาแล้วก็สามารถทำได้อย่างง่ายดายในอินเทอร์เฟซของตัวเอง @Transactional(readOnly = true) public interface AccountRepository extends JpaRepository&lt;Account, Long&gt; { @Query("&lt;JPQ statement here&gt;") List&lt;Account&gt; findByCustomer(Customer customer); } ฉันต้องการที่จะรู้ว่าฉันจะเพิ่มวิธีการที่กำหนดเองที่สมบูรณ์แบบด้วยการใช้งานสำหรับ AccountRepository ข้างต้นได้อย่างไร เนื่องจากเป็นส่วนต่อประสานฉันไม่สามารถใช้วิธีการได้

7
เมื่อใช้ getOne และ findOne วิธี Spring Data JPA
ฉันมีกรณีใช้งานซึ่งมันเรียกสิ่งต่อไปนี้: @Override @Transactional(propagation=Propagation.REQUIRES_NEW) public UserControl getUserControlById(Integer id){ return this.userControlRepository.getOne(id); } สังเกตการแพร่กระจาย@Transactionalมี. REQUIRES_NEWและที่เก็บใช้getOne เมื่อฉันเรียกใช้แอพฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้: Exception in thread "main" org.hibernate.LazyInitializationException: could not initialize proxy - no Session ... แต่ถ้าผมเปลี่ยนgetOne(id)โดยfindOne(id)ทั้งหมดทำงานได้ดี BTW ก่อนที่กรณีการใช้งานจะเรียกเมธอดgetUserControlByIdมันได้เรียกใช้เมธอดinsertUserControl แล้ว @Override @Transactional(propagation=Propagation.REQUIRES_NEW) public UserControl insertUserControl(UserControl userControl) { return this.userControlRepository.save(userControl); } ทั้งสองวิธีเป็นPropagation.REQUIRES_NEWเพราะฉันใช้การควบคุมการตรวจสอบอย่างง่าย ฉันใช้getOneวิธีการเพราะมันถูกกำหนดไว้ในส่วนต่อประสานJpaRepositoryและส่วนต่อประสานที่เก็บของฉันขยายจากตรงนั้นฉันทำงานกับ JPA แน่นอน JpaRepositoryอินเตอร์เฟซที่ยื่นออกมาจากCrudRepository วิธีการที่กำหนดไว้ในfindOne(id)CrudRepository คำถามของฉันคือ: ทำไมgetOne(id)วิธีการล้มเหลว? เมื่อใดที่ฉันควรใช้getOne(id)วิธีการ? ฉันกำลังทำงานกับที่เก็บอื่น …

14
สปริง JPA เลือกคอลัมน์ที่เฉพาะเจาะจง
ฉันใช้ Spring JPA เพื่อดำเนินการฐานข้อมูลทั้งหมด อย่างไรก็ตามฉันไม่รู้วิธีเลือกคอลัมน์เฉพาะจากตารางใน Spring JPA ตัวอย่างเช่น: SELECT projectId, projectName FROM projects

3
JPA กับ Spring Data JPA แตกต่างกันอย่างไร
ฉันสับสนเล็กน้อยเกี่ยวกับความแตกต่างระหว่าง Spring Data-JPA และ JPA ฉันรู้เกี่ยวกับ JPA ว่าเป็นข้อมูลจำเพาะสำหรับการคง Java Objects ให้กับฐานข้อมูลเชิงสัมพันธ์โดยใช้เทคโนโลยี ORM ที่เป็นที่นิยม กล่าวอีกนัยหนึ่ง JPA ให้บริการอินเทอร์เฟซและเทคโนโลยี ORM อื่น ๆ ใช้อินเทอร์เฟซที่รู้จักในฐานะผู้ให้บริการ JPA เช่นไฮเบอร์เนต ตอนนี้ Spring Data JPA คืออะไร? Spring Data JPA ได้เพิ่มฟังก์ชั่นเพิ่มเติม (การเชื่อมต่อ) ผ่าน JPA และยังคงมีการระบุไว้เท่านั้นหรือเป็นผู้ให้บริการ JPA ด้วยหรือไม่ ฉันเห็น Spring Data JPA ทำงานได้กับที่เก็บข้อมูล (เลเยอร์ DAO: ถ้าฉันไม่ผิด) ดังนั้นฉันหมายความว่ามันแตกต่างกันอย่างไรเมื่อใช้ 'Spring Data JPA + …

8
จะทดสอบที่เก็บข้อมูล Spring ได้อย่างไร
ฉันต้องการพื้นที่เก็บข้อมูล (พูดUserRepository) ที่สร้างขึ้นด้วยความช่วยเหลือของ Spring Data ฉันยังใหม่กับ Spring-data (แต่ไม่ใช่ฤดูใบไม้ผลิ) และฉันใช้บทช่วยสอนนี้ ตัวเลือกของเทคโนโลยีสำหรับจัดการกับฐานข้อมูลคือ JPA 2.1 และ Hibernate ปัญหาคือฉันไม่รู้วิธีเขียนการทดสอบหน่วยสำหรับที่เก็บดังกล่าว ลองใช้create()วิธีการเช่น ในขณะที่ฉันกำลังทำการทดสอบก่อนฉันควรจะเขียนการทดสอบหน่วยสำหรับมัน - และนั่นคือสิ่งที่ฉันพบปัญหาสามประการ: ขั้นแรกฉันจะฉีดเลียนแบบEntityManagerการใช้งานUserRepositoryอินเทอร์เฟซที่ไม่มีอยู่ได้อย่างไร Spring Data จะสร้างการใช้งานตามอินเทอร์เฟซนี้: public interface UserRepository extends CrudRepository&lt;User, Long&gt; {} อย่างไรก็ตามฉันไม่รู้ว่าจะบังคับให้ใช้การEntityManagerจำลองและการล้อเลียนอื่น ๆ อย่างไร - ถ้าฉันเขียนการใช้งานด้วยตัวเองฉันอาจมีวิธีการตั้งค่าเพื่อEntityManagerให้ฉันใช้การจำลองสำหรับการทดสอบหน่วย (ในฐานะที่เป็นสำหรับการเชื่อมต่อฐานข้อมูลจริงฉันมีJpaConfigurationระดับกำกับด้วย@Configurationและ@EnableJpaRepositoriesที่โปรแกรมกำหนดถั่วDataSource, EntityManagerFactory, EntityManagerฯลฯ - แต่ที่เก็บควรจะทดสอบที่เป็นมิตรและอนุญาตให้มีการเอาชนะสิ่งเหล่านี้) ประการที่สองฉันควรทดสอบการโต้ตอบหรือไม่? มันยากสำหรับฉันที่จะเข้าใจว่าวิธีการใดEntityManagerและQueryควรจะเรียกว่าอะไร (คล้าย ๆ กันverify(entityManager).createNamedQuery(anyString()).getResultList();) เนื่องจากฉันไม่ใช่คนที่เขียนการนำไปใช้ ประการที่สามฉันควรจะทดสอบหน่วยวิธีการสร้างข้อมูลโดยสปริงตั้งแต่แรกหรือไม่? ดังที่ฉันทราบรหัสไลบรารีของบุคคลที่สามไม่ควรผ่านการทดสอบหน่วย - เฉพาะโค้ดที่นักพัฒนาเขียนขึ้นเองเท่านั้นที่ควรได้รับการทดสอบหน่วย …

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

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

8
setMaxResults สำหรับคำอธิบายประกอบ Spring-Data-JPA?
ฉันพยายามรวม Spring-Data-JPA เข้ากับโครงการของฉัน สิ่งหนึ่งที่ทำให้ฉันสับสนคือฉันจะบรรลุ setMaxResults (n) ด้วยคำอธิบายประกอบได้อย่างไร ตัวอย่างเช่นรหัสของฉัน: public interface UserRepository extends CrudRepository&lt;User , Long&gt; { @Query(value="From User u where u.otherObj = ?1 ") public User findByOhterObj(OtherObj otherObj); } ฉันต้องการคืนone (and only one)User จาก otherObj เท่านั้น แต่ฉันหาวิธีใส่คำอธิบายประกอบ maxResults ไม่ได้ ใครช่วยให้คำแนะนำฉันได้ไหม (mysql บ่น: com.mysql.jdbc.JDBC4PreparedStatement@5add5415: select user0_.id as id100_, user0_.created as created100_ …

16
Spring Data JPA - ข้อยกเว้น“ ไม่พบคุณสมบัติสำหรับประเภท”
ฉันค้นหาใน Google และพบผลลัพธ์มากมาย แต่ไม่มีผลลัพธ์ใดที่สามารถตอบปัญหาของฉันได้ นี่มันไปแล้ว ฉันกำลังพยายามศึกษา Spring MVC และ Spring Data JPA โดยใช้การโคลน pinterest เพียงเล็กน้อย ดังนั้นต่อไปนี้เป็นส่วนของโค้ดที่ฉันคิดว่าเกี่ยวข้องกับปัญหาของฉัน รุ่น / หน่วยงาน @Entity @Table(name = "pin_item") public class PinItem implements Serializable { // properties ... @JoinColumn(name = "board_id", referencedColumnName = "user_board_id") @ManyToOne(optional = false) private UserBoard board; // getters and setters... } @Entity …

12
Spring Data JPA มีวิธีใดบ้างในการนับจำนวนรายการโดยใช้วิธีการแก้ไขชื่อ?
Spring Data JPAรองรับเอนทิตีการนับโดยใช้ข้อมูลจำเพาะ แต่มีวิธีใดบ้างในการนับเอนทิตีโดยใช้วิธีการแก้ไขชื่อ? สมมติว่าฉันต้องการวิธีcountByNameการนับเอนทิตีด้วยชื่อเฉพาะเช่นเดียวกับวิธีfindByNameการดึงเอนทิตีทั้งหมดที่มีชื่อเฉพาะ

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