如何在没有AttributeConverter或customUserType的情况下使用Hibernate 5.2.10 MySQL JSON支持来映射到Java实体类?
我试图将MySQL JSON列映射到Java实体类。正在寻找最干净的方法 通过研究发现了3种可能的方法:如何在没有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映射,因
@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>