Liquibase 为几何类型生成迁移(Spring 使用 JPA/Hibernate 启动)
Liquibase generate migration for geometry type (Spring boot with JPA/Hibernate)
我正在编写一个 RESTfull API Spring 使用 Maven Liquibase 启动来管理数据库的迁移 MySQL 8。
我已在线搜索 (1,2, 3),但 Liquibase 仍在迁移中生成“TINYBLOB”类型,而不是“POINT”或“GEOMETRY”。令人惊讶的是,当我编辑迁移文件(即 changeSet 并使用“POINT”时,mvn liquibase:update
仍然在数据库上创建一个 TINYBLOB
列。
我有一个典型的 JPA 实体:
import org.locationtech.jts.geom.Point;
@Entity
class MyModel {
private Point location;
// more fields
我使用的是 Liquibase 4.3 版和 Hibernate 5.4 版。对于 hibernate 方言,我使用的是 org.hibernate.spatial.dialect.mysql.MySQL8SpatialDialect
.
在我看来,空间类型不是 Liquibase 所假定的……但这会令人惊讶。任何帮助将不胜感激(所有其他数据类型都按预期运行)。
运行 前段时间遇到了同样的问题,最终手动覆盖了自动生成的迁移文件的部分内容。 MySQL 8.
工作正常
<!-- Define the type-->
<property name="pointType" value="geometry" dbms="h2"/> <!-- Only relevant for in-memory integration tests-->
<property name="pointType" value="POINT" dbms="mysql, oracle, mssql, mariadb, postgresql"/>
<!-- Use the type on the column-->
<column name="location" type="${pointType}">
<constraints nullable="true" />
</column>
我的 Hibernate 模型的简化版本。
package com.Whosebug.sample.domain;
import com.vividsolutions.jts.geom.Point;
import org.hibernate.annotations.Type;
import org.springframework.data.elasticsearch.annotations.FieldType;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name = "some_entity")
public class SomeEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@org.springframework.data.elasticsearch.annotations.Field(type = FieldType.Keyword)
private Long id;
@Type(type = "com.vividsolutions.jts.geom.Point")
@Column(name = "location", nullable = false, columnDefinition = "geometry")
private Point location;
}
我正在编写一个 RESTfull API Spring 使用 Maven Liquibase 启动来管理数据库的迁移 MySQL 8。
我已在线搜索 (1,2, 3),但 Liquibase 仍在迁移中生成“TINYBLOB”类型,而不是“POINT”或“GEOMETRY”。令人惊讶的是,当我编辑迁移文件(即 changeSet 并使用“POINT”时,mvn liquibase:update
仍然在数据库上创建一个 TINYBLOB
列。
我有一个典型的 JPA 实体:
import org.locationtech.jts.geom.Point;
@Entity
class MyModel {
private Point location;
// more fields
我使用的是 Liquibase 4.3 版和 Hibernate 5.4 版。对于 hibernate 方言,我使用的是 org.hibernate.spatial.dialect.mysql.MySQL8SpatialDialect
.
在我看来,空间类型不是 Liquibase 所假定的……但这会令人惊讶。任何帮助将不胜感激(所有其他数据类型都按预期运行)。
运行 前段时间遇到了同样的问题,最终手动覆盖了自动生成的迁移文件的部分内容。 MySQL 8.
工作正常 <!-- Define the type-->
<property name="pointType" value="geometry" dbms="h2"/> <!-- Only relevant for in-memory integration tests-->
<property name="pointType" value="POINT" dbms="mysql, oracle, mssql, mariadb, postgresql"/>
<!-- Use the type on the column-->
<column name="location" type="${pointType}">
<constraints nullable="true" />
</column>
我的 Hibernate 模型的简化版本。
package com.Whosebug.sample.domain;
import com.vividsolutions.jts.geom.Point;
import org.hibernate.annotations.Type;
import org.springframework.data.elasticsearch.annotations.FieldType;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name = "some_entity")
public class SomeEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@org.springframework.data.elasticsearch.annotations.Field(type = FieldType.Keyword)
private Long id;
@Type(type = "com.vividsolutions.jts.geom.Point")
@Column(name = "location", nullable = false, columnDefinition = "geometry")
private Point location;
}