Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java org.hibernate.MappingException:没有JDBC类型的方言映射:2002_Java_Oracle_Hibernate_Spatial - Fatal编程技术网

Java org.hibernate.MappingException:没有JDBC类型的方言映射:2002

Java org.hibernate.MappingException:没有JDBC类型的方言映射:2002,java,oracle,hibernate,spatial,Java,Oracle,Hibernate,Spatial,当我尝试执行JPA nativeQuery以获取几何字段类型时,我得到了org.hibernate.MappingException:没有JDBC类型的方言映射:2002 我正在使用Oracle和org.hibernatespatial.Oracle.oraclespatial10gDialante 几何体字段映射为: @Column(name="geometry") @Type(type = "org.hibernatespatial.GeometryUserType") privat

当我尝试执行JPA nativeQuery以获取几何字段类型时,我得到了
org.hibernate.MappingException:没有JDBC类型的方言映射:2002

我正在使用Oracle和
org.hibernatespatial.Oracle.oraclespatial10gDialante

几何体字段映射为:

@Column(name="geometry")  
@Type(type = "org.hibernatespatial.GeometryUserType")  
private Geometry geometry;

// ...

List<Object> listFeatures = new LinkedList<Object>();

Query query = entityManager.createNativeQuery(
   "SELECT "+ slots +" , geometry FROM  edtem_features feature, edtem_dades dada WHERE" +
   " feature."+ tematic.getIdGeomField() +" = dada."+ tematic.getIdDataField()+ 
   " AND dada.capesid= "+ tematic.getCapa().getId() +
   " AND feature.geometriesid= "+ tematic.getGeometria().getId());
listFeatures.addAll(query.getResultList());
@列(name=“geometry”)
@类型(Type=“org.hibernatespatial.GeometryUserType”)
私人几何;
// ...
List listFeatures=新建LinkedList();
Query Query=entityManager.createNativeQuery(
选择“+插槽+”,从edtem_特征中选择几何图形,edtem_数据,其中+
“特征。”+tematic.getIdGeomField()+“=dada。”+tematic.getIdDataField()+
“和dada.capesid=“+tematic.getCapa().getId())+
“和feature.geometriesid=“+tematic.getGeometria().getId());
addAll(query.getResultList());
这是我在spring+struts2上的hibernate配置

<bean id="entityManagerFactory"
            class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />

    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="databasePlatform" value="org.hibernatespatial.oracle.OracleSpatial10gDialect" />
            <property name="showSql" value="true" />
        </bean>
    </property>
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernatespatial.oracle.OracleSpatial10gDialect</prop>
            <prop key="hibernate.default_schema">my_schema</prop>
        </props>
    </property>
</bean>

org.hibernatespatial.oracle.oraclespatial
我的思维模式

如何解决这个问题?或者如何强制几何体类型使其工作?

问题不在于查询或映射,而在于Hibernate配置。您会发现为要使用的SQL方言的名称指定了错误的字符串。建议您发布正在使用的Hibernate配置文件。

您是否可以尝试使用以下映射定义:

@Column(name = "geometry", columnDefinition="Geometry", nullable = true) 
private Geometry geometry;
而不是:

@Column(name="geometry")  
@Type(type = "org.hibernatespatial.GeometryUserType")  
private Geometry geometry;

谢谢你的回复

我使用namedQuery来检索一个包含所有字段的完整对象,并使用他的类型几何体来解决这个问题


非常感谢

在使用全文搜索时收到相同的错误消息,以下是对我的帮助:

在PgAdmin中安装以下扩展:uncent;(对于Postgres用户-底部有一个示例)

类型:
CREATE-EXTENSION-uncent
并创建/安装了扩展,现在该数据库的用户可以使用该扩展

请注意,这应该安装在应用程序所在的服务器上

接下来的步骤是什么:

  • 创建自定义方言(以便识别和阅读语法)
  • 在application.properties文件中添加该自定义方言
下面是一个例子:

我使用Spring Boot 2.0和Postgres作为数据库:

安装扩展后,我们创建了以下类:
PgFullTextFunction
和文章中描述的
postgresql82dial

你也可以试试这个:

但是我使用了第一个类的例子,它是有效的,我只是删除了 以下一行:
value=org.apache.commons.lang3.StringUtils.stripeAccents(value)
; 从
PgFullTextFunction

一般来说,据我所知,我们创建了一个实现SQL函数接口的类,这样我们就创建了一个新的方言。类中注册的
pgfulltextdialine
中的
fts()
,就像我们的
PgFullTextFunction
类中呈现方法的包装器

之后,在我们的
application.properties
file/files中,我们将路径添加到新创建的方言:

spring.jpa.properties.hibernate.dialect=com.your.package.name.persistence.PgFullTextDialect
如果您想为全文函数使用特定的配置,可以查看我在上面zymr.com上发布的第二个链接,这里的示例是附加语言配置

我希望这能有所帮助

您的查询:

Query query = entityManager.createNativeQuery("Query String");
您忘记添加实体类参数

您应该添加实体类参数

例如:

Query query = entityManager.createNativeQuery("Query String", EntityName.class);

谢谢你的时间,我已经编辑了我的帖子来显示我的jpa配置。当我使用Hql查询时,我的项目运行良好,如:geometrics result=null;结果=(几何图形)entityManager.createQuery(“从几何图形中选择几何图形,其中geo.id=?1”).setParameter(1,id).getSingleResult();