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

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

9
Spring JPA @Query พร้อม LIKE
ฉันกำลังพยายามสร้างเมธอดใน CrudRepository ที่จะสามารถให้รายชื่อผู้ใช้ที่มีชื่อผู้ใช้เป็นเหมือนพารามิเตอร์อินพุต (ไม่เพียง แต่เริ่มต้นด้วย แต่ยังมีอยู่ด้วย) ฉันพยายามใช้ method "findUserByUsernameLike(@Param("username") String username)"แต่ตามที่บอกไว้ในเอกสาร Spring เมธอดนี้เท่ากับ " where user.username like ?1" มันไม่ดีสำหรับฉันอย่างที่ฉันได้บอกไปแล้วว่าฉันพยายามดึงผู้ใช้ทั้งหมดที่มีชื่อผู้ใช้ ... ฉันเขียนแบบสอบถามถึงวิธีการ แต่มันไม่ได้ปรับใช้ @Repository public interface UserRepository extends CrudRepository<User, Long> { @Query("select u from user u where u.username like '%username%'") List<User> findUserByUsernameLike(@Param("username") String username); } มีใครช่วยฉันได้ไหม
95 java  jquery  sql  spring  jpa 

8
ธุรกรรมที่ทำเครื่องหมายว่าย้อนกลับเท่านั้น: ฉันจะหาสาเหตุได้อย่างไร
ฉันมีปัญหาในการทำธุรกรรมภายในวิธี @Transactional ของฉัน: methodA() { methodB() } @Transactional methodB() { ... em.persist(); ... em.flush(); log("OK"); } เมื่อฉันเรียก methodB () จาก methodA () เมธอดจะผ่านไปได้สำเร็จและฉันสามารถเห็น "ตกลง" ในบันทึกของฉัน แต่แล้วฉันก็เข้าใจ Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction …

8
FetchMode ทำงานอย่างไรใน Spring Data JPA
ฉันมีความสัมพันธ์ระหว่างโมเดลอ็อบเจ็กต์สามตัวในโปรเจ็กต์ของฉัน (โมเดลและส่วนย่อยที่เก็บในตอนท้ายของโพสต์ เมื่อฉันเรียกPlaceRepository.findByIdมันจะทำให้เกิดการค้นหาสามรายการ: ("sql") SELECT * FROM place p where id = arg SELECT * FROM user u where u.id = place.user.id SELECT * FROM city c LEFT OUTER JOIN state s on c.woj_id = s.id where c.id = place.city.id นั่นเป็นพฤติกรรมที่ค่อนข้างผิดปกติ (สำหรับฉัน) เท่าที่ฉันสามารถบอกได้หลังจากอ่านเอกสาร Hibernate แล้วก็ควรใช้แบบสอบถาม JOIN เสมอ ไม่มีความแตกต่างในแบบสอบถามเมื่อFetchType.LAZYเปลี่ยนเป็น FetchType.EAGERในPlaceคลาส (แบบสอบถามที่มี …

2
REFRESH และ MERGE หมายถึงอะไรในแง่ของฐานข้อมูล?
ฉันสงสัยและต้องการหาคำตอบนี้โดยด่วน Google จะไม่ช่วยอะไรมาก Java Persistence API มีคุณสมบัติเหล่านี้ที่บอกกรอบงานเพื่อเรียงลำดับการดำเนินการบนเอนทิตีที่เกี่ยวข้อง: CascadeType.PERSIST CascadeType.DELETE CascadeType.MERGE CascadeType.REFRESH ฉันรู้ว่าสองตัวแรกหมายถึงอะไร: เมื่อฉันยังคงวัตถุ A ซึ่งมี B ก็ยังคงมี B เช่นกันและเมื่อฉันลบ A ให้ลบ B ด้วย แต่ฉันไม่สามารถเข้าใจได้ว่าอีกสองคนทำอะไรสำเร็จ ช่วยด้วย?
94 java  jpa  persistence 

6
คอลเลกชันแผนที่ JPA ของ Enums
มีวิธีใดใน JPA ในการแมปคอลเล็กชัน Enums ภายในคลาสเอนทิตีหรือไม่ หรือวิธีแก้ปัญหาเดียวคือการรวม Enum กับคลาสโดเมนอื่นและใช้เพื่อแมปคอลเล็กชัน? @Entity public class Person { public enum InterestsEnum {Books, Sport, etc... } //@??? Collection<InterestsEnum> interests; } ฉันใช้การใช้งาน Hibernate JPA แต่แน่นอนว่าต้องการใช้โซลูชันที่ไม่เชื่อเรื่องพระเจ้ามากกว่า
93 java  jpa  jakarta-ee 

7
วิธีแมปฟิลด์เอนทิตีที่มีชื่อเป็นคำสงวนใน JPA
@Column(name="open") การใช้ภาษา sqlserver กับ hibernate [SchemaUpdate] Unsuccessful: create table auth_session (id numeric(19,0) identity not null, active tinyint null, creation_date datetime not null, last_modified datetime not null, maxidle int null, maxlive int null, open tinyint null, sessionid varchar(255) not null, user_id numeric(19,0) not null, primary key (id), unique (sessionid)) [SchemaUpdate] Incorrect …

6
Spring Data JPA แมปผลลัพธ์เคียวรีเนทีฟกับ Non-Entity POJO
ฉันมีวิธีการจัดเก็บ Spring Data พร้อมด้วยแบบสอบถามเนทีฟ @Query(value = "SELECT g.*, gm.* FROM group g LEFT JOIN group_members gm ON g.group_id = gm.group_id and gm.user_id = :userId WHERE g.group_id = :groupId", nativeQuery = true) GroupDetails getGroupDetails(@Param("userId") Integer userId, @Param("groupId") Integer groupId); และผมอยากจะ map ผลให้ไม่ Entity GroupDetailsPOJO เป็นไปได้หรือไม่และหากเป็นเช่นนั้นโปรดยกตัวอย่างได้ไหม

3
ฉันจะตรวจสอบความถูกต้องสองฟิลด์ขึ้นไปร่วมกันได้อย่างไร
ฉันใช้การตรวจสอบความถูกต้อง JPA 2.0 / Hibernate เพื่อตรวจสอบโมเดลของฉัน ตอนนี้ฉันมีสถานการณ์ที่ต้องตรวจสอบการรวมกันของสองฟิลด์: public class MyModel { public Integer getValue1() { //... } public String getValue2() { //... } } แบบจำลองไม่ถูกต้องหากทั้งสองอย่างgetValue1()และgetValue2()เป็นnullอย่างอื่นและถูกต้อง ฉันจะทำการตรวจสอบความถูกต้องประเภทนี้ด้วย JPA 2.0 / Hibernate ได้อย่างไร? ด้วย@NotNullคำอธิบายประกอบแบบง่ายgetters ทั้งสองต้องไม่เป็นโมฆะเพื่อผ่านการตรวจสอบความถูกต้อง

10
วิธีลบเอนทิตีที่มีความสัมพันธ์ ManyToMany ใน JPA (และแถวตารางการเข้าร่วมที่เกี่ยวข้อง)
สมมติว่าฉันมีสองเอนทิตี: กลุ่มและผู้ใช้ ผู้ใช้ทุกคนสามารถเป็นสมาชิกได้หลายกลุ่มและทุกกลุ่มสามารถมีผู้ใช้ได้หลายคน @Entity public class User { @ManyToMany Set<Group> groups; //... } @Entity public class Group { @ManyToMany(mappedBy="groups") Set<User> users; //... } ตอนนี้ฉันต้องการลบกลุ่มออก (สมมติว่ามีสมาชิกหลายคน) ปัญหาคือเมื่อฉันเรียก EntityManager.remove () ในบางกลุ่มผู้ให้บริการ JPA (ในกรณีของฉันคือ Hibernate) ไม่ลบแถวออกจากตารางรวมและการดำเนินการลบล้มเหลวเนื่องจากข้อ จำกัด ของคีย์ต่างประเทศ การเรียกลบ () บน User ใช้งานได้ดี (ฉันเดาว่าสิ่งนี้เกี่ยวข้องกับความสัมพันธ์ที่เป็นเจ้าของ) ดังนั้นฉันจะลบกลุ่มในกรณีนี้ได้อย่างไร วิธีเดียวที่ฉันสามารถทำได้คือโหลดผู้ใช้ทั้งหมดในกลุ่มจากนั้นให้ผู้ใช้ทุกคนลบกลุ่มปัจจุบันออกจากกลุ่มของเขาและอัปเดตผู้ใช้ แต่ดูเหมือนว่าไร้สาระสำหรับฉันที่จะเรียกอัปเดต () กับผู้ใช้ทุกคนจากกลุ่มเพื่อให้สามารถลบกลุ่มนี้ได้
92 java  hibernate  jpa  orm 

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

2
จะแนะนำข้อ จำกัด หลายคอลัมน์ด้วยคำอธิบายประกอบ JPA ได้อย่างไร
ฉันกำลังพยายามแนะนำข้อ จำกัด หลายคีย์ในเอนทิตีที่แมป JPA: public class InventoryItem { @Id private Long id; @Version private Long version; @ManyToOne @JoinColumn("productId") private Product product; @Column(nullable=false); private long serial; } โดยทั่วไปคู่ (ผลิตภัณฑ์อนุกรม) ควรไม่ซ้ำกัน แต่ฉันพบเพียงวิธีที่บอกว่าอนุกรมควรไม่ซ้ำกัน เห็นได้ชัดว่านี่ไม่ใช่ความคิดที่ดีเนื่องจากผลิตภัณฑ์ต่างๆอาจมีหมายเลขซีเรียลเหมือนกัน มีวิธีสร้างข้อ จำกัด นี้ผ่าน JPA หรือไม่หรือฉันถูกบังคับให้สร้างเป็น DB ด้วยตนเอง
91 java  jpa  mapping 


4
JPA inheritance @EntityGraph มีการเชื่อมโยงทางเลือกของคลาสย่อย
ด้วยรูปแบบโดเมนต่อไปนี้ฉันต้องการโหลดAnswers ทั้งหมดรวมถึงValues และ sub-children ที่เกี่ยวข้องและวางลงในAnswerDTOเพื่อแปลงเป็น JSON ฉันมีวิธีการแก้ปัญหาการทำงาน แต่มันทนทุกข์ทรมานจากปัญหา N + 1 @EntityGraphที่ฉันต้องการที่จะกำจัดโดยใช้เฉพาะกิจ LAZYสมาคมทั้งหมดมีการกำหนดค่า @Query("SELECT a FROM Answer a") @EntityGraph(attributePaths = {"value"}) public List<Answer> findAll(); ใช้ ad-hoc @EntityGraphบนRepositoryวิธีการที่ฉันสามารถมั่นใจได้ว่าค่าถูกดึงมาล่วงหน้าเพื่อป้องกัน N + 1 ในการAnswer->Valueเชื่อมโยง ในขณะที่ผลลัพธ์ของฉันดีมีปัญหาอีก N + 1 เพราะขี้เกียจโหลดความselectedสัมพันธ์ของMCValues ใช้สิ่งนี้ @EntityGraph(attributePaths = {"value.selected"}) ล้มเหลวเนื่องจากselectedฟิลด์เป็นส่วนหนึ่งของValueเอนทิตีบางส่วนเท่านั้น: Unable to locate Attribute with the the given name …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.