代码之家  ›  专栏  ›  技术社区  ›  Steve

如何让Hibernate调用我的自定义typedef?

  •  6
  • Steve  · 技术社区  · 15 年前

    我正在尝试定义一个CompositeUserType来处理我的JPA/Hibernate应用程序中的特定类型。我有一个名为ApplicationMessageType的CompositeUserType,它是用来处理映射的。

    @TypeDefs({
        @TypeDef(
            defaultForType = ApplicationMessage.class,
            typeClass = ApplicationMessageType.class
        )
    })
    package mptstp.domain;
    
    import mptstp.domain.messages.ApplicationMessage;
    
    import org.hibernate.annotations.TypeDef;
    import org.hibernate.annotations.TypeDefs;
    

    如果我理解正确的话,我在TypeDef中使用defaultForType参数,每当我试图保存或加载ApplicationMessage时,应该调用自定义类型代码。

    曾经

    任何指点都将不胜感激。。。

    1 回复  |  直到 15 年前
        1
  •  3
  •   Pascal Thivent    15 年前

    我正在尝试定义一个CompositeUserType来处理我的JPA/Hibernate应用程序中的特定类型。我有一个名为ApplicationMessageType的CompositeUserType,它是用来处理映射的。

    请记住,您必须声明列(使用 @Columns 注释)的字段或属性级别 混合成的

    根据我读到的,我应该能够创建一个包-信息.java在我的域层次结构中包含 TypeDefs .

    这是正确的,这是在多个实体中使用自定义类型时的建议策略。

    从理论上讲 defaultForType ApplicationMessage ,它应该将持久性策略委托给自定义映射类型 ApplicationMessageType .

    但是我确定这是如何与复合用户类型一起工作的,我不确定您是否需要重复这个过程 @Type 宣布 (在这种情况下,您应该申报 name TypeDef ).

    不能说。您真的成功地持久化了一个属性为class的实体吗 还是一点也不?可能会显示一个带注释的实体。

    参考

    资源