Hibernate 5.1与Postgis 2.2几何列映射

时间:2016-04-20 12:57:04

标签: hibernate postgresql postgis

hibernate 5.1 spatial的文档尚未发布(AFAIK),我正试图将带有JST几何字段的实体持久化到PostgreSQL 9.5 + Postgis 2.2,没有任何运气。

我也注意到hibernate-core-5.1.0中没有org.hibernate.spatial包。我尝试过以下注释的变体:

const buildClickHandler = (item) => () => {
    alert(item.name);
}

const state = [{id:1, name:'Hello'},
{id:2, name:'World'},
{id:3, name:'React'},
{id:4, name:'Example'}];


class Example extends React.Component {
  render(){
    const list = this.props.items.map((item,index) => {
        return <li key={index} onClick={buildClickHandler(item)}>{item.name}</li>
    })
    return <ul>
        {list}
    </ul>
  }
}

React.render(<Example items={state} />, document.getElementById('container'));

当columnDefinition设置为“Point”时,我得到“column”the_geom“的类型为point,但表达式的类型为bytea”。在hibernate spatial 4文档中,据说版本5+不需要@Type注释,但是应该使用什么呢?如何将geom存储为有效的Postgis几何体?

1 个答案:

答案 0 :(得分:0)

经过一段时间的搜索,我找到了一个符合我需求的解决方案(我也希望你的解决方案)。由于版本5的所有a.node_connections[i]jts几何类型都能够由hibernate直接管理,因此您应该配置hibernate来管理这些类型。

在我的场景中,我管理了一个spring geolatte类中的所有配置:那里,如here的“示例9 ”所示,我决定使用{ {1}}方法如下:

@Configuration

通过这种方式,我的所有MetadataBuilder几何图形(@Bean public static MetadataBuilder metadataBuilder() { ServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().build(); MetadataSources sources = new MetadataSources( standardRegistry ); return sources.getMetadataBuilder(); } @Bean public static MetadataBuilder spatialConfiguration() { JTSGeometryType jtsGeometryType = new JTSGeometryType(PGGeometryTypeDescriptor.INSTANCE); return PersistenceConfiguration.metadataBuilder().applyBasicType(jtsGeometryType); } 几何图形jts中的另一个几何图形)都被正确映射为我的数据库模型中的声明。

希望这可以帮到你,

的Dario。