将 JSON 对象映射到 Hibernate 实体

2023-12-28

我将为我的模型启动一个使用 Spring 和 Hibernate 管理的 REST 应用程序项目。

我知道 Spring 允许你从 HTTP 请求中获取 Java 对象(使用@Consumes(JSON)注解)。如果这个Java对象也是一个Hibernate实体,是否会有冲突?嵌套对象是否有效(例如@ManyToOne关系)?


Maven 依赖

您需要做的第一件事是设置以下内容休眠类型 https://github.com/vladmihalcea/hibernate-types/项目中的 Maven 依赖项pom.xml配置文件:

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

领域模型

现在,如果您使用 PostgreSQL,则需要使用JsonType来自休眠类型。

为了在您的实体中使用它,您必须在类级别或在包信息.java包级描述符,如下所示:

@TypeDef(name = "json", typeClass = JsonType.class)

并且,实体映射将如下所示:

@Type(type = "json")
@Column(columnDefinition = "json")
private Location location;

如果您使用 Hibernate 5 或更高版本,则JSON类型由自动注册Postgre92Dialect.

否则,您需要自行注册:

public class PostgreSQLDialect extends PostgreSQL91Dialect {

    public PostgreSQL92Dialect() {
        super();
        this.registerColumnType( Types.JAVA_OBJECT, "json" );
    }
}

The JsonType也适用于 Oracle、SQL Server、PostgreSQL、MySQL 和 H2。查看该项目 https://github.com/vladmihalcea/hibernate-types/有关如何在各种关系数据库系统上映射 JSON 列类型的更多详细信息,请参阅页面。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 JSON 对象映射到 Hibernate 实体 的相关文章

随机推荐