是否可以使用休眠映射不同的字段类型?

Posted

技术标签:

【中文标题】是否可以使用休眠映射不同的字段类型?【英文标题】:Is it possible to map different field types using hibernate? 【发布时间】:2012-12-28 14:59:23 【问题描述】:

我想知道是否可以映射不同的数据类型。例如,我在 Java 中有一个 Visit 数据类型,它有一个 String 类型的 userEmail 字段,我可以用 hibernate 将它映射到一个具有 userID 而不是 userEmail 的数据库表吗?根据 id 它会找到电子邮件并将电子邮件返回给 java,反之亦然?这可能吗?

如果是,那么映射会是什么样子?或者这应该是什么样子:

<many-to-one name="patientEmail" 
    column="idPatient" 
    not-null="true" 
    class="com.my.myapp.datamodel.Patient"/>

【问题讨论】:

【参考方案1】:

是的,你可以。

您必须创建一个扩展为 Hibernate 的 UserType 的类。

Custom UserType Hibernate

它可以是像这样的用户:

@Column(name = "commission_type")
        @Type(type = "com.core.commission.model.FNEnumUserType", parameters = @Parameter(name = "type", value = "com.core.commission.dto.CommissionType"))
        private CommissionType commissionType;

其中 FNEnumUserType 是 cstom 数据类型,与您的访问相同

【讨论】:

以上是关于是否可以使用休眠映射不同的字段类型?的主要内容,如果未能解决你的问题,请参考以下文章

关于LINQ字段不同类型做映射问题!

使用休眠映射布尔值

创建一对多映射,其中许多可以是不同的对象类型

ElasticSearch之动态映射和模板

ElasticSearch是否有架构?

Spring Boot休眠类型异常创建带有JSON字段的表