草庐IT

QueryDSL-JPA

全部标签

java - Hibernate(JPA)如何进行急切查询,加载所有子对象

关于我的earlierquestion,我想确保加载所有子对象,因为我有多个线程可能需要访问数据(从而避免延迟加载异常)。我知道这样做的方法是在查询(EJBQL)中使用“fetch”关键字。像这样:selectdistinctofromOrderoleftjoinfetcho.orderLines假设一个模型有一个Order类,其中有一组OrderLines。我的问题是似乎需要“distinct”关键字,否则我似乎会为每个OrderLine取回一个Order。我做的对吗?也许更重要的是,有没有办法拉入所有子对象,无论多深?我们有大约10-15个类,对于服务器,我们需要加载所有内容...

java - 使用 JPA 从集合中删除子项

我在我的网络应用程序中使用JPAoverHibernate。这里有两个实体(只显示了getter):classChild{privateParentparent;@ManyToOne(optional=false)@JoinColumn(name="parent_id",referencedColumnName="parent_id",nullable=false,updatable=false)publicParentgetParent(){returnparent;}}classParent{privateCollectionchildren;@OneToMany(fetch=Fe

java - JPA如何使复合外键成为复合主键的一部分

我有以下表格,如何将它们映射到JPA实体:TABLEEvent{EventIDSourceID....OthereventfieldsPK(EventID,SourceID)}TABLEMEETING{MeetingIDEventIDSourceID...OthermeetingfieldsPK(MeetingID,EventID,SourceID)FK(EventID,SourceID)//FKwithEventtable}Event表与Meeting表是一对多的关系。如何在JPA中映射这种双向关系? 最佳答案 @Embeddab

java - 使用@WebMvcTest 获取 "At least one JPA metamodel must be present"

我对Spring还很陌生,正在尝试为@Controller做一些基本的集成测试。@RunWith(SpringRunner.class)@WebMvcTest(DemoController.class)publicclassDemoControllerIntegrationTests{@AutowiredprivateMockMvcmvc;@MockBeanprivateDemoServicedemoService;@Testpublicvoidindex_shouldBeSuccessful()throwsException{mvc.perform(get("/home").acce

java - JPA OneToMany 集合的条件

如果我有这个实体:@EntityclassPet{@Idlongid;publicenumState{ALIVE,DEAD}@Enumerated(EnumType.STRING)@...Statestate;@...Stringname;}我可以创建这样的映射吗:@EntityclassOwner{@OneToMany(condition="state=ALIVE")//orsomethinglikethatSetalivePets;@OneToMany(condition="state=DEAD")SetdeadPets;} 最佳答案

java - JPA 默认获取类型

据我了解,@OneToOne和@ManyToOneJPA注释执行eager获取。我希望这些延迟加载到我的应用程序中,或者至少暗示它(这是hibernate默认的)。我已经开始添加注释fetch=FetchType.LAZY例如@ManyToOne(optional=false,fetch=FetchType.LAZY)而不是@ManyToOne(optional=false)这既乏味又容易出错。有没有办法在应用程序级别做到这一点?也许在persistence.xml中? 最佳答案 迄今为止,我选择让Hibernate在通过注释映射方

java - 是否可以使用 Hibernate 或 JPA 注释来限制 @OneToMany 集合的大小?

如果我在使用JPA/HibernateAnnotations的POJO中有以下映射集合:@OneToMany(mappedBy="columnName",fetch=FetchType.LAZY)@OrderBy("aField")@MapKeyJoinColumn(name="id_fk")@LazyCollection(value=LazyCollectionOption.EXTRA)privateSetcollection=newHashSet();是否可以将加载集合的大小限制为特定数字n或将页面大小设置为延迟加载集合的前n个元素,而不加载所有项目或来自该类的其他实例的任何其他项

java - 如何使用 EntityManager (JPA) 在 DAO 中实现 update() 方法?

实现简单更新的标准方法是什么?示例:我们有电话号码为NNNNNN的用户,现在我们要将其设置为YYYYYY。@PersistenceContextprivateEntityManagerem;publicvoidupdate(UsertransientUser){whatshouldbehere?}用户实体尽可能简单:@Entity@Table(name="USER")publicclassUser{@Id@GeneratedValueprivateIntegerid;@Column(nullable=false,unique=true)privateStringlogin;privat

java - JPA 和 TableView 。可以做到吗?

这个问题在这里已经有了答案:DoesJPAsupportmappingtosqlviews?(4个回答)关闭6年前。我们目前有一个JavaEE系统,我们在其中使用JPA映射到我们的数据库。这是一个相当完善的系统,大约有20个实体。我们现在被命令为所有事情使用View。例如:如果我们有一个名为PERMISSION的表,那么我们还需要一个名为PERMISSION_VIEW的View。基本上我们需要对每个表都这样做,而我们的应用程序只能通过查询View来访问数据。现在我们所有的实体bean看起来像这样:@Entity@Table(name="PERMISSION")@NamedQueries

java - 使用 JPA/EJB3 进行批量插入

JPA/EJB3框架是否提供标准方式来执行批量插入操作...?我们使用hibernate作为持久化框架,所以我可以回退到HibernateSession并使用组合session.save()/session.flush()实现批量插入。但是想知道EJB3是否支持这个... 最佳答案 JPA和Hibernate都没有为批量插入提供特别支持,使用JPA进行批量插入的习惯用法与使用Hibernate时相同:EntityManagerem=...;EntityTransactiontx=em.getTransaction();tx.begi