我正在使用(空间)休眠注释为在 PostGIS 之上实现的空间应用程序创建模式。从我的注释类创建数据库模式时,我需要创建空间索引以加速整个应用程序中使用的空间查询。
@Entity
@Table(name = "MY_CLASS")
@org.hibernate.annotations.Table(
appliesTo = "MY_CLASS", indexes = {
@Index(name = "idx_my_class_sidx",
columnNames = { "GEOM" }) })
public class MyClass {
[...]
@Column(name = "GEOM")
@Type(type = "org.hibernate.spatial.GeometryType")
private LineString geom;
[...]
}
虽然导出的模式包含索引,但不幸的是它是使用不受欢迎的索引方法创建的;hibernate 似乎默认为btree
但是 PostGIS 建议GIST
在处理空间数据时使用索引(请参阅http://postgis.net/docs/manual-2.0/using_postgis_dbmanagement.html#id441511)。
CREATE INDEX idx_my_class_sidx
ON my_class
USING btree
(geom);
虽然我可能只是回退使用普通 SQL 创建索引,但我想知道是否有一种方法可以使用休眠注释来覆盖 PostgreSQL 的默认方法类型?解决方案甚至想法如何做到这一点将不胜感激。
TIA,蒂尔曼