Hibernate5 - 将所有 VARCHAR(255) 更改为 TEXT 而不逐字段映射?

Posted

技术标签:

【中文标题】Hibernate5 - 将所有 VARCHAR(255) 更改为 TEXT 而不逐字段映射?【英文标题】:Hibernate5 - change all VARCHAR(255) to TEXT without mapping field by field? 【发布时间】:2018-02-11 15:36:24 【问题描述】:

Hibernate5 是否可以将所有Strings 映射到TEXT; 没有单独注释或映射每个字段?

更新

我一直在对此进行一些研究并且非常接近,但仍然没有明显的解决方案。

线索#1 来自https://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/Hibernate_User_Guide.html

链接进入https://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/Hibernate_User_Guide.html#basic-custom-type,这是另一个兔子洞

【问题讨论】:

【参考方案1】:

如果字段名称和列相同,则使用 hibernate 可以忽略每个字段上的注释。 例如: 数据库:USER_NAME -> 字段名:user_name;

要将 VARCHAR 类型映射到 String,您可以创建自定义方言。例如,如果您使用 mysql,您可以创建一个扩展 MySQLDialect 的类并创建映射数据类型。

public class CustomMySQLDialect extends MySQLDialect  
    public MySQLDialectDataType() 
        registerHibernateType(Types.NVARCHAR, 255, "string");
        registerHibernateType(Types.BIGINT, "long");
    

【讨论】:

以上是关于Hibernate5 - 将所有 VARCHAR(255) 更改为 TEXT 而不逐字段映射?的主要内容,如果未能解决你的问题,请参考以下文章

如何一次性将所有 varchar 列/变量/参数转换为 nvarchar 类型?

从 Migrate 迁移到 Spring MVC 4 + Hibernate5

Hibernate5配置与使用具体解释

搭建SpringMVC+Spring4.3.2+Hibernate5.2.2框架

Spring ORM数据访问——Hibernate

Spring ORM数据访问——Hibernate