Eclipselink 与 MongoDB java.lang.ClassCastException

2023-12-13

我正在尝试使用 Eclipselink 和 MongoDB 配置 nosql 持久性单元,但在部署过程中遇到以下堆栈异常;

...
SEVERE:   java.lang.ClassCastException: org.eclipse.persistence.nosql.adapters.mongo.MongoPlatform cannot be cast to org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    at org.eclipse.persistence.sequencing.TableSequence.onConnect(TableSequence.java:168)
    at org.eclipse.persistence.sequencing.Sequence.onConnect(Sequence.java:270)
    at org.eclipse.persistence.internal.sequencing.SequencingManager.onConnectSequences(SequencingManager.java:927)
    at org.eclipse.persistence.internal.sequencing.SequencingManager.onConnectInternal(SequencingManager.java:747)
    at org.eclipse.persistence.internal.sequencing.SequencingManager.onConnect(SequencingManager.java:700)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeSequencing(DatabaseSessionImpl.java:281)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:629)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:625)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:565)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.postConnectDatasource(DatabaseSessionImpl.java:792)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:749)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:241)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:681)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:204)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:304)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:336)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:302)
    at org.glassfish.persistence.jpa.JPADeployer$2.visitPUD(JPADeployer.java:451)
    at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:510)
    at org.glassfish.persistence.jpa.JPADeployer.iterateInitializedPUsAtApplicationPrepare(JPADeployer.java:492)
    at org.glassfish.persistence.jpa.JPADeployer.event(JPADeployer.java:395)
    at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:131)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:484)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:527)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:523)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:356)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:522)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:546)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1423)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1500(CommandRunnerImpl.java:108)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1762)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1674)
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534)
    at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224)
    at org.glassfish.grizzly.http.server.StaticHttpHandler.service(StaticHttpHandler.java:297)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:246)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
    at java.lang.Thread.run(Thread.java:722)

连接似乎已成功建立,但随后我收到 java.lang.ClassCastException 并且连接被关闭。

我的 PU 在 persistence.xml 中如下所示:

<persistence-unit name="NoSQL_PU" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="eclipselink.target-database" value="org.eclipse.persistence.nosql.adapters.mongo.MongoPlatform"/>
      <property name="eclipselink.nosql.connection-spec" value="org.eclipse.persistence.nosql.adapters.mongo.MongoConnectionSpec"/>
      <property name="eclipselink.nosql.property.mongo.port" value="27017"/>
      <property name="eclipselink.nosql.property.mongo.host" value="localhost"/>
      <property name="eclipselink.nosql.property.mongo.db" value="dev"/>
      <property name="eclipselink.logging.level" value="FINEST"/>
    </properties>
  </persistence-unit>

我的 NoSQL 实体类;

    @NamedQueries({
        @NamedQuery(name = "Comment.findAll", query = "SELECT e FROM Comment e"),
        @NamedQuery(name = "Comment.findByPK", query = "SELECT e FROM Comment e WHERE e.id = :id"),})
    @Entity
    @NoSql(dataFormat = DataFormatType.MAPPED)
    public class Comment implements Serializable {

    // Serial-------------------------------------------------------------------
    private static final long serialVersionUID = 1L;

    // Variables----------------------------------------------------------------
    @Id
    @GeneratedValue
    @Field(name="_id")
    private String id;
    @Basic
    private Long created;
    @Basic
    private String commenterId;
    @Basic
    private String comment;

    // Constructors-------------------------------------------------------------

    // Getters------------------------------------------------------------------

    // Setters------------------------------------------------------------------

}

我使用 CTM,所以我在无状态会话 bean 中调用 PU;

@Stateless
public class TicketDAOImpl implements TicketDAO {

    @PersistenceContext(unitName = "NoSQL_PU")
    private EntityManager em;

}

我一直在关注eclipse链接指南但我找不到与此相关的任何内容。


问题出在我的持久性单元上。默认情况下,所有实体类都包含在内,因此我的 NoSQL 和 SQL 实体都被传递到 SQL 和 NoSQL 持久性单元。解决方案只是指定 persistence.xml 持久单元内的实体。

<persistence-unit name="Dastrax_NoSQL_PU" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>declare_your_entity_1</class>
    <class>declare_your_entity_2</class>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="eclipselink.target-database" value="org.eclipse.persistence.nosql.adapters.mongo.MongoPlatform"/>
      <property name="eclipselink.nosql.connection-spec" value="org.eclipse.persistence.nosql.adapters.mongo.MongoConnectionSpec"/>
      <property name="eclipselink.nosql.property.mongo.port" value="27017"/>
      <property name="eclipselink.nosql.property.mongo.host" value="localhost"/>
      <property name="eclipselink.nosql.property.mongo.db" value="dev"/>
      <property name="eclipselink.logging.level" value="FINEST"/>
    </properties>
  </persistence-unit>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Eclipselink 与 MongoDB java.lang.ClassCastException 的相关文章

  • 使用 mongoimport 从 Windows 文件夹批量导入 MongoDB

    我的存档中有很多 json 文件 我需要将它们导入到 mongo 每一个操作中 我认为它可能是循环的 你对此有什么想法吗 如果您使用的是 Linux Unix shell 您可以尝试 for filename in do mongoimpo
  • 是否可以从 MongoDB 查询返回计算字段?

    在 SQL 中我可以做类似的事情 SELECT myNum myNum 1 as increment FROM myTable 有效地执行任意数学和其他函数 并将它们作为结果中的字段返回 MongoDB 也可以做同样的事情吗 db test
  • 嵌套文档上的 MongoDB $lookup

    我是 mongo 的新手 正在努力应对以下问题 我有 2 个集合 结构如下 对于我的一生 我不知道如何对学校收藏进行 lookup 阅读其他帖子 我肯定使用 ObjectId 作为参考以及外部字段 下面是我的结构 Alumni id joh
  • 无法制作带有身份验证的基本 mongo shell 脚本

    我有一个非常复杂的问题 我认为我可以通过编写 mongo shell 脚本来解决 但我什至无法建立一个简单的连接 我有一个本地 mongo 数据库 它需要一个用户名 密码 我通常这样访问 mongo admin u
  • 将 Mongo 集合转储为 JSON 格式

    有没有办法将 mongo 集合转储为 json 格式 无论是在 shell 上还是使用 java 驱动程序 我正在寻找性能最好的一个 Mongo 包含一个 mongoexport 实用程序 参见文档 https docs mongodb c
  • 使用 Java 查询 MongoDB 中数组元素的文档

    我是 MongoDB 新手 我的样本文档是 Notification date from ISODate 2013 07 08T18 30 00Z date too ISODate 2013 07 30T18 30 00Z descript
  • MongoDB 聚合计数太慢

    我有大约 6 万个文档users集合 并有以下查询 db getCollection users aggregate match userType employer lookup from companies localField id f
  • 我是否可以以编程方式要求 eclipselink 删除并创建所有表?

    这有助于单元测试 以下内容应该适合您 ServerSession session entityManager unwrap ServerSession class SchemaManager schemaManager new Schema
  • 如何从 mongoDB 数组中仅返回匹配的元素

    我已经找这个问题一个星期了 我不明白为什么它仍然不起作用 我将此对象放入我的 MongoDB 数据库中 produc cod prod 0001 description Ordenador price 400 current stock 3
  • 如何在猫鼬中获得多个结果并将其合并为一个响应

    在 API 路由 调用中 我希望有 3 个 mongoose 查询 然后组合结果以形成响应 json Query student countDocuments then stundentNumber gt return stundentNu
  • Ember-data和MongoDB,如何处理_id

    我正在将 ember data 与 Rails 和 MongoDB 一起使用 并且在 MongoDB 中的 id 字段中存储 ID 的方式遇到问题 Ember data 将使用 id 作为 ID 的默认字段 所以我尝试像这样覆盖它 App
  • MongoDB 将通过 $lookup 聚合运算符使用分片

    lookup是 MongoDB 3 2 中的新增功能 它对同一数据库中的未分片集合执行左外联接 以从 联接 集合中过滤文档进行处理 To use lookup the from集合不能被分片 另一方面 分片是一种有用的水平扩展方法 一起使用
  • 更新 MongoDB 中精确元素数组中的字段

    我有一个结构如下的文档 id 43434 heroes nickname test items nickname test2 items Can I set的第二个元素items数组中嵌入对象的数组heros with nickname t
  • Node js POST请求错误错误[ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置标头

    我使用 Node JS Express 和 Mongo DB 开发了 REST 服务 我已经定义了一个 POST 请求来将用户添加到数据库表中 当我尝试 在本地主机上 POSTMAN 的 REST 服务时 他会工作并将用户添加到表中 但节点
  • Google App Engine 数据存储中最有效的一对多关系?

    抱歉 如果这个问题太简单了 我才刚上九年级 我正在尝试学习 NoSQL 数据库设计 我想设计一个谷歌数据存储模型 最大限度地减少读 写次数 以下是一对多关系中的博客文章和评论的玩具示例 将所有评论存储在 StructuredProperty
  • 有没有办法限制特定集合中的记录数量

    假设我插入以下记录 例如 foo1 foo2 foo3 foo4 foo10 我希望该集合在任何时间点仅保留 5 条记录 例如 它可能是 foo1 foo5 或 foo2 foo6 或 foo6 foo10 我应该如何实现这个目标 听起来您
  • Mongoose 中的分组(依据)?

    我已经在 shell 中构建了我想要的查询 但在 Mongoose 中编写它时遇到了问题 db commentstreams group key page id true reduce function obj prev prev num
  • JPA hashCode() / equals() 困境 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 曾经有过some https stackoverflow com questions 4762573 should embeddable jpa
  • 将 mongoid 会话设置为只读

    我有不同的会话mongoid yml 其中一个会话提供来自静态 mongo 数据库的数据 我想知道是否有可能以只读模式 加载 会话 以便不进行任何更改save create destroy or destroy all可以制作 我的mong
  • 使用 MongoDB PHP 驱动程序时的安全问题

    我有在 MYSQL 上保护 sql 注入的经验 但是在使用 php 驱动程序的 MongoDB 上我应该注意什么 在大多数页面中 我通过 GET POST 和搜索 插入系统获取数据 我通过 UDID 其他字段进行搜索 并且可以插入任何字符串

随机推荐