【问题标题】:How to work multiple Hibernate Properties file for lazy loading?如何使用多个休眠属性文件进行延迟加载?
【发布时间】:2017-03-29 21:41:45
【问题描述】:

我想构建一个应用程序,其中我使用相同的 Hibernate 对象但使用多个 Hibernate 属性文件。例如,人 1 可能只想要表 1 上的第 1-3 列,而人 2 想要表 1 上的第 1,5-6 列。

如何根据用户动态加载不同的配置(如果人 1 正在使用应用程序或人 2)?这可能吗?

谢谢!

【问题讨论】:

    标签: java hibernate hql lazy-loading dto


    【解决方案1】:

    您不需要为此使用不同的映射文件。您可以在代码级别处理此问题。您可以在项目中引入对象到实体,反之亦然。

    根据登录的用户,您只能获取/设置这些字段。

    例如:

    if (user.equals(user1)) {
            domainObj.setColumn1(entityObject.getColumbn1);
            domainObj.setColumn2(entityObject.getColumbn2);
            domainObj.setColumn3(entityObject.getColumbn2);
    
        }
    
        if (user.equals(user2)) {
            domainObj.setColumn1(entityObject.getColumbn1);
            domainObj.setColumn2(entityObject.getColumbn2);
            domainObj.setColumn3(entityObject.getColumbn3);
            domainObj.setColumn4(entityObject.getColumbn4);
            domainObj.setColumn5(entityObject.getColumbn5);
        }
    

    【讨论】:

    • 如果我不想创建自定义 domainObj 怎么办,除非它是同一个?即使它是同一个我可以不做手动映射吗?不能自动地图吗?因为按照您的建议,我需要为每个用户设置设置器。
    • 您的 dominObj (DTO) 只是实体的副本。您可以为所有类型的用户使用相同的域 Obj。我的建议只是将您正在考虑的“各种休眠映射”移动到代码中。可能有一种方法可以在休眠中维护不同的映射文件。
    • 您需要为每个用户类别提供上述逻辑。
    猜你喜欢
    • 2017-12-19
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多