Oracle 添加空间扩展时,为什么Datanucleus中会出现错误

Oracle 添加空间扩展时,为什么Datanucleus中会出现错误,oracle,jdo,postgis,spatial,datanucleus,Oracle,Jdo,Postgis,Spatial,Datanucleus,我正在尝试将Datanucleus与Datanucleus空间插件一起使用。我正在为映射使用注释。我正在尝试PostGIS和Oracle spatial。我将回到datanucleus的教程。我所经历的没有任何意义。我的开发环境是Netbeans 7.x(我已经尝试过7.0、7.2和7.3)和MAven 2.2.1。使用位于的Datanucleus教程中的Position类,我发现如果我在Maven依赖项中不包含Datanucleus空间插件,它连接到PostGIS或Oracle不会有问题,并提

我正在尝试将Datanucleus与Datanucleus空间插件一起使用。我正在为映射使用注释。我正在尝试PostGIS和Oracle spatial。我将回到datanucleus的教程。我所经历的没有任何意义。我的开发环境是Netbeans 7.x(我已经尝试过7.0、7.2和7.3)和MAven 2.2.1。使用位于的Datanucleus教程中的Position类,我发现如果我在Maven依赖项中不包含Datanucleus空间插件,它连接到PostGIS或Oracle不会有问题,并提交数据,空间数据存储为blob(我预期会这样,因为不存在空间插件)。使用PostGIS,本教程运行良好

我通过将org.postgis.Point类替换为oracle.spatial.geometry.JGeometry来修改Position类,并将连接指向oracle服务器。如果不使用spatial,该点将再次存储为blob。对于spatial,我得到以下异常:

java.lang.ClassCastException:org.datanucleus.store.rdbms.datasource.dbcp.PoolgDataSource$PoolGuardConnectionWrapper无法强制转换为oracle.jdbc.OracleConnection

修改后的类如下所示:

@PersistenceCapable
public class Position
{
   @PrimaryKey
   private String name;

   @Persistent
   private JGeometry point;

   public Position(String name, double x, double y)
   {
       this(name, JGeometry.createPoint(new double[]{x, y}, 2, 4326));
   }

   public Position(String name, JGeometry point)
   {
       this.name = name;
       this.point = point;
   }

   public String getName()
   {
       return name;
   }

   public JGeometry getPoint()
   {
       return point;
   }

   @Override
   public String toString()
   {
       return "[name] "+ name + " [point] "+point;
   }
}

在DataNucleus Spatial这个神话般的世界里,我缺少了什么吗?为什么每次添加spatial时都会失败?即使我在注释,我也需要JDO xml文件吗?教程中是否没有提供注释?如果教程中显示的jdo xml文件是必需的,并且我得到这些错误的原因是什么,我应该把它放在哪里?我目前的项目进度落后了3周,如果这个问题不能很快得到解决,我将切换到Hibernate。

您没有提供堆栈跟踪,因此除了DBCP之外无法判断是什么原因导致了问题,而且您可以很容易地使用支持的任何其他连接池。如果某个Oracle“Connection”对象无法强制转换到其他JDBC连接,那么Oracle JDBC驱动程序可能是用于与此版本的DBCP不同的JDBC版本?(有些版本的JDBC破坏了向后兼容性)。文章中没有提供任何信息来确认或排除这一点(日志会告诉你其中的一些)。如前所述,还有大量其他可用的连接池

DN Spatial教程是,有下载链接和GitHub链接,它定义了如果使用JDO XML文件,它将去哪里。提供的教程很有效


最后,可能值得一读…

为了避免
无法转换到oracle.jdbc.OracleConnection
错误,我建议您使用可以在central maven repository上找到的datanucleus geospatial 3.2.7版本