如何从JPA获取分离的对象
在我的应用程序中,我需要以分离模式获取大多数对象(使用find API获取)。如何从JPA获取分离的对象,jpa,jpa-2.0,eclipselink,Jpa,Jpa 2.0,Eclipselink,在我的应用程序中,我需要以分离模式获取大多数对象(使用find API获取)。 我想知道是否有一种方法可以向JPA提供程序请求分离的对象,并保存对detach()API的额外调用。 另外,我希望在这种模式下创建的对象成本更低,因为JPA提供程序不需要将其添加到实体管理器上下文中。 有没有办法通过JPA API实现这一点? 有没有办法通过查询结果实现这种功能 具体地说,我使用的是eclipselink,所以如果有一种特定的方法来实现它,它也会很有帮助 如果在事务外部获取分离的实体,则无需额外调用
我想知道是否有一种方法可以向JPA提供程序请求分离的对象,并保存对detach()API的额外调用。
另外,我希望在这种模式下创建的对象成本更低,因为JPA提供程序不需要将其添加到实体管理器上下文中。
有没有办法通过JPA API实现这一点?
有没有办法通过查询结果实现这种功能
- 具体地说,我使用的是eclipselink,所以如果有一种特定的方法来实现它,它也会很有帮助李>
detach()
即可获取该实体。如果您不使用容器管理的事务,这很简单,只是不要启动事务
如果您使用的是CMT,则必须确保请求对象不是启用事务的EJB:
- 如果在EJB中,则通过以下方式暂停事务:
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
- 从POJO调用
。您不必直接调用它,重要的是查询结果将以非EJB对象结束EntityManager
List<DTO> dtos = em.createQuery("SELECT NEW com.example.DTO( o.title, o.version) FROM Entity o").getResultList();
List dtos=em.createQuery(“从实体o中选择新的com.example.DTO(o.title,o.version)).getResultList();
构造的类型必须具有具有所有相关属性的构造函数。列表中的对象(实体与否)将始终创建为分离。然而,实例化一个新对象的开销很小