如何在没有AttributeConverter或customUserType的情况下使用Hibernate 5.2.10 MySQL JSON支持来映射到Java实体类?

如何在没有AttributeConverter或customUserType的情况下使用Hibernate 5.2.10 MySQL JSON支持来映射到Java实体类?,java,mysql,json,hibernate,jpa,Java,Mysql,Json,Hibernate,Jpa,我试图将MySQL JSON列映射到Java实体类。正在寻找最干净的方法 通过研究发现了3种可能的方法: 扩展AbstractSingleColumnStandardBasicType 创建自定义用户类型 使用属性转换器 我使用属性转换器将JSON列从字符串(MySQL驱动程序将其转换为字符串)转换为我所需的类型-这适用于Hibernate V4.3.10和V5.2.10 我试图找出Hibernate是否本机支持JSON,并找到了PR,基于PR,它看起来确实向MySQL方言添加了JSON映射,因

我试图将MySQL JSON列映射到Java实体类。正在寻找最干净的方法

通过研究发现了3种可能的方法:

  • 扩展AbstractSingleColumnStandardBasicType
  • 创建自定义用户类型
  • 使用属性转换器
  • 我使用属性转换器将JSON列从字符串(MySQL驱动程序将其转换为字符串)转换为我所需的类型-这适用于Hibernate V4.3.10和V5.2.10

    我试图找出Hibernate是否本机支持JSON,并找到了PR,基于PR,它看起来确实向MySQL方言添加了JSON映射,因此让Hibernate知道JSON列

    这是否意味着我可以使用类似这样的东西映射到数据库中的JSON列?
    @Column(name=“JSON\u type\u Column”)
    与JSONAttribute对应的私有对象

    如果我不能像这样使用它,并且需要使用上述3种方法中的一种,那么我是否需要升级以获得
    registerColumnType(Types.JAVA_OBJECT,“json”)
    这是PR的一部分,在Hibernate V5.2.10中出现,我是否从V5.2.10中获得了更多支持JSON列的功能?

    我还查看了相应的测试用例,以了解JSON列映射是如何完成的,它使用@Access注释via属性,看起来它将实体中相应的JSON列变量从字符串转换为Map后设置为Map

    非常感谢您的帮助

    谢谢

    通过研究发现了3种可能的方法:

    • 扩展AbstractSingleColumnStandardBasicType
    • 创建自定义用户类型
    • 使用属性转换器
    AttributeConvertor
    对此没有帮助,但您仍然可以使用,或

    这是否意味着我可以使用类似这样的东西映射到中的JSON列 DB

    不需要。
    json
    类型仅适用于JDBC,这样Hibernate在
    PreparedStatement
    上设置参数或获取
    ResultSet
    时就知道如何处理该JDBC对象

    我是否从V5.2.10中获得了更多支持JSON列的功能

    不,但你只需要供应

    您只需使用Maven Central上提供的

    <dependency>
        <groupId>com.vladmihalcea</groupId>
        <artifactId>hibernate-types-52</artifactId>
        <version>${hibernate-types.version}</version>
    </dependency>
    
    
    Vladmichalcea网站
    hibernate-types-52
    ${hibernate types.version}
    

    在MySQL、PostgreSQL、Oracle、SQL Server或H2上使用Hibernate Types提供的
    JdonType
    ,无需做任何修改。

    非常感谢您的回复@vlad,我还有几个问题,正在尝试快速测试一些与此相关的东西,我试图理解为什么attributeConverter不能解决这个问题,所以用这两种方法构建了一个模型来理解它们的区别。似乎也有同样的结果?您能在这里指导我吗?拥有属性转换器需要为我需要的每种新类型拥有一个转换器,除此之外还有其他负面影响吗?我的观点是基于
    <dependency>
        <groupId>com.vladmihalcea</groupId>
        <artifactId>hibernate-types-52</artifactId>
        <version>${hibernate-types.version}</version>
    </dependency>