当前位置: 首页 > 知识库问答 >
问题:

覆盖jackson-datatype-hibernate生成的id名称

岳池暝
2023-03-14
"client":{"com.test.domain.Client":1}

我希望它改用id:

"client":{"id":1}

我正在对ObjectMapper进行子类化,所以也许有一些方法可以挂钩

public class HibernateAwareObjectMapper extends ObjectMapper {

    public HibernateAwareObjectMapper() {
        Hibernate4Module hbm = new Hibernate4Module();
        hbm.configure(Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS, true);
        registerModule(hbm);
    }   
}

共有1个答案

仇浩旷
2023-03-14

我遇到了同样的问题。我深入研究了Jackson的代码,发现如果使用Hibernate映射创建Hibernate4Module,它应该可以工作。

所以我的解决方案如下所示。

>

  • 标准Spring SessionFactory定义在我的XML配置中的某个位置:

    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
         ...
    </bean>
    
    <bean class="my.own.HibernateAwareObjectMapper"/>
    
    @Autowired
    public HibernateAwareObjectMapper(LocalSessionFactoryBean sessionFactoryBean) {
        Hibernate4Module hibernate4Module = new Hibernate4Module(sessionFactoryBean.getConfiguration().buildMapping());
        hibernate4Module.configure(Hibernate4Module.Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS, true);
        registerModule(hibernate4Module);
    }
    

  •  类似资料:
    • 问题内容: 我在Employee类中有以下定义 现在,我想使用现有员工ID导入现有员工。即使在保存之前设置了员工ID,也会忽略分配的ID,并存储自动递增的ID。我们如何覆盖呢? 问题答案: 我编写了自己的生成器来解决此问题。 并像这样使用它:(替换包名)

    • 设置了hibernate的Id生成策略,但是现在要存放指定的Id,要怎样才能 防止被hibernate自动生成的id覆盖? 关闭生成策略,但是现在要开启生成策略。

    • 我正在使用supportlib v4来实现主细节流。 方法在单击后调用:

    • 问题内容: 我正在使用org.hibernate.cfg.ImprovedNamingStrategy,但是对于表我已经明确指定了表名 但是hibernate似乎正在寻找event_log。显式命名不应该覆盖EnhancedNamingStrategy提供的命名 问题答案: 这是org.hibernate.cfg.ImprovedNamingStrategy的行为,它将混合大小写的名称转换为嵌入的

    • 我们没有本地存储,每次我们在POD部署时生成idp元数据。 然而,SP还需要处理idp元数据x509证书。有办法处理这种情况吗?

    • 我正在编写FastAPI程序,它只是一堆用于查询数据的endpoint。他们可以使用许多不同的查询参数,这些参数是从配置文件中自动生成的,例如endpoint可能看起来像