Java 执行map方法时的Orika延迟加载

Java 执行map方法时的Orika延迟加载,java,spring,hibernate,jpa,orika,Java,Spring,Hibernate,Jpa,Orika,我正在使用Orika将Hibernate实体映射到web服务调用中的DTO对象。对于父子关系,这些实体中有@OneToMany和@manytone关系。此外,我正在使用SpringJPA创建这些实体 将Hibernate实体映射到POJO DTO类时,map()方法会导致加载所有延迟加载的属性 @Entity @Table(name="folders") public class FolderEntity { @Id @GeneratedValue private int

我正在使用Orika将Hibernate实体映射到web服务调用中的DTO对象。对于父子关系,这些实体中有@OneToMany和@manytone关系。此外,我正在使用SpringJPA创建这些实体

将Hibernate实体映射到POJO DTO类时,map()方法会导致加载所有延迟加载的属性

@Entity
@Table(name="folders")
public class FolderEntity {
    @Id
    @GeneratedValue
    private int id;

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="consumerId")
    private ConsumerEntity consumer;


在本例中,使用者属性映射导致Hibernate加载子级,这不是我想要的

我认为HibernateUnenhanceStrategy是通过删除Hibernate代理来解决这个问题的,但它没有,或者我做得不对

@Component
public class MapperFacadeFactory implements FactoryBean<MapperFacade> {

    public MapperFacade getObject() throws Exception {
        DefaultMapperFactory.Builder factoryBuilder = new DefaultMapperFactory.Builder();
        factoryBuilder.unenhanceStrategy(new HibernateUnenhanceStrategy());
        DefaultMapperFactory factory = factoryBuilder.build();      
        MapperFacade facade = factory.getMapperFacade();
        return facade;
    }
@组件
公共类MapperFacadeFactory实现FactoryBean{
公共MapperFacade getObject()引发异常{
DefaultMapperFactory.Builder factoryBuilder=新建DefaultMapperFactory.Builder();
unhancestrategy(新的HibernateUnenhanceStrategy());
DefaultMapperFactory工厂=factoryBuilder.build();
MapperFacade facade=factory.getMapperFacade();
返回正面;
}
我意识到我可以从映射配置中排除字段,但我希望在某些web服务调用中可能包含子项,但只希望在其他web服务调用中包含高级父属性

我相信我可以自己创建一个CustomMapper来解决这个问题,但在我走这条路之前,我想确保我没有错过Orika内置的东西


谢谢。

您想要的是Blaze Persistence实体视图的用途:
Folder folder = mapper.map(some_folder_entity, Folder.class);
@Component
public class MapperFacadeFactory implements FactoryBean<MapperFacade> {

    public MapperFacade getObject() throws Exception {
        DefaultMapperFactory.Builder factoryBuilder = new DefaultMapperFactory.Builder();
        factoryBuilder.unenhanceStrategy(new HibernateUnenhanceStrategy());
        DefaultMapperFactory factory = factoryBuilder.build();      
        MapperFacade facade = factory.getMapperFacade();
        return facade;
    }